Computer >> Máy Tính >  >> Lập trình >> Javascript

Loại thuật toán sắp xếp đặc biệt trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số nguyên làm đối số duy nhất.

Hàm sẽ sắp xếp mảng dựa trên các điều kiện sau -

  • Tất cả các số chẵn được sắp xếp theo thứ tự tăng dần

  • Tất cả các số lẻ được sắp xếp theo thứ tự giảm dần

  • Vị trí tương đối của số chẵn và số lẻ không đổi

Ví dụ -

Nếu mảng đầu vào là -

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

Sau đó, đầu ra phải là -

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

Ví dụ

Sau đây là mã -

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;
}

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

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