Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 특별한 유형의 정렬 알고리즘

<시간/>

정수 배열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.

함수는 다음 조건에 따라 배열을 정렬해야 합니다. -

  • 모든 짝수는 오름차순으로 정렬됩니다.

  • 모든 홀수는 내림차순으로 정렬됩니다.

  • 짝수와 홀수의 상대 위치는 동일하게 유지됩니다.

예를 들어 -

입력 배열이 -

인 경우
const arr = [12, 17, 15, 24, 1, 6];

그러면 출력은 다음과 같아야 합니다. -

const output = [6, 17, 15, 12, 1, 24];

예시

다음은 코드입니다 -

const arr = [12, 17, 15, 24, 1, 6];
const specialSort = (nums = []) => {
   const oddArr = [], evenArr = [];
   for (let i = 0; i < nums.length; i++){
      if (nums[i] & 1) {
         oddArr.push(i);
      } else {
         evenArr.push(i);
      }
   }
   nums.sort((a, b) => a - b);
   let odd = oddArr.length - 1, even = 0;
   const res = [];
   for (let i = 0; i < nums.length; i++){
      if (nums[i] & 1) {
         res[oddArr[odd--]] = nums[i];
      } else {
         res[evenArr[even++]] = nums[i];
      }
   }
   return res;
}

출력

다음은 콘솔 출력입니다 -

[ 6, 17, 15, 12, 1, 24 ]