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

Sắp xếp thay đổi (Alternative sorting) mảng trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số làm đối số đầu tiên và duy nhất.

Công việc của hàm là sắp xếp các phần tử trong mảng theo kiểu thay đổi (alternate).

Bằng thay đổi, chúng ta có nghĩa sau:

Giả sử chúng ta có mảng arr chỉ chứa 4 phần tử. Hàm nên sắp xếp các phần tử sao cho:

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

Lưu ý có thể có nhiều hơn một giải pháp cho một mảng cho trước, chúng ta chỉ cần trả về một trong các giải pháp có thể.

Ví dụ:

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

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

Thì một đầu ra có thể là:

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

Ví dụ

Dưới đây là mã nguồn:

const arr = [1, 2, 3, 4, 5, 6]; const alternateSort = (arr = []) => {    arr.sort((a, b) => a - b);    const N = arr.length;    let mid = Math.floor(N/2);    if(N % 2 !== 0){       mid++;    };    const small = arr.splice(0, mid);    const big = arr.splice(0,arr.length);    for(let i = 0; i < N; i++){       if(i % 2 === 0){          arr[i] = small.pop()       }else{          arr[i] = big.pop()       };    }; }; alternateSort(arr); console.log(arr);

Kết quả

Đầu ra trên console:

[ 3, 6, 2, 5, 1, 4 ]

Giải thích: Sort mảng, chia 2 nửa (nhỏ và lớn). Chèn xen kẽ: vị trí chẵn lấy từ nửa nhỏ (pop - lấy lớn nhất trong nửa nhỏ), vị trí lẻ lấy từ nửa lớn (pop - lấy lớn nhất trong nửa lớn). Tạo pattern: nhỏ-lớn-nhỏ-lớn... (valley-peak-valley-peak).