Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuật toán sắp xếp đặc biệt trong JavaScript

Viết hàm sắp xếp mảng số nguyên theo quy tắc: số chẵn tăng dần, số lẻ giảm dần, nhưng vị trí tương đối giữa chẵn/lẻ giữ nguyên.

Ví dụ: [12,17,15,24,1,6] → [6,17,15,12,1,24].

Ví dụ

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;
};
console.log(specialSort(arr));

Kết quả

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