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

Sắp xếp không đều mảng trong JavaScript

Mô tả vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr làm đối số duy nhất. Hàm phải sắp xếp mảng sao cho sau khi sắp xếp, các phần tử tuân theo mẫu:

arr[0] < arr[1] > arr[2] < arr[3]....

Ví dụ, nếu đầu vào là:

const arr = [1, 5, 1, 1, 6, 4];

Thì đầu ra có thể là (có thể có nhiều đáp án đúng):

const output = [1, 6, 1, 5, 1, 4];

Ví dụ minh họa

Mã thực hiện:

const arr = [1, 5, 1, 1, 6, 4]; 
const unevenSort = (arr = []) => { 
  arr.sort((a, b) => a - b); 
  let mid = Math.floor(arr.length / 2); 
  if(arr.length % 2 === 1){ 
    mid += 1; 
  }; 
  let even = arr.slice(0, mid); 
  let odd = arr.slice(mid); 
  for(let i = 0; i < arr.length; i++){ 
    if(i % 2 === 0){ 
      arr[i] = even.pop(); 
    }else{ 
      arr[i] = odd.pop(); 
    }; 
  }; 
}; 
unevenSort(arr); 
console.log(arr);

Đầu ra

Kết quả trong console sẽ là:

[ 1, 6, 1, 5, 1, 4 ]