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

Sử dụng sắp xếp hợp nhất để sắp xếp đệ quy một mảng JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng Số. Hàm phải sắp xếp mảng bằng cách sử dụng thuật toán sắp xếp hợp nhất.

Hợp nhất Sắp xếp

Merge Sort được tạo thành từ hai phần hoặc quy trình -

  • một phần đệ quy chia bộ sưu tập thành các đơn vị đơn lẻ,
  • và sau đó là một phần lặp lại kết hợp chúng lại với nhau theo đúng thứ tự.

Ví dụ

const arr = [23, 4, 67, 32, 1, 7, 56, 5, 89];
const mergeSort = arr => {
   if (arr.length < 2){
      return arr;
   }
   const middle = Math.floor(arr.length / 2);
   const left = arr.slice(0, middle), right = arr.slice(middle, arr.length);
   return merge(mergeSort(left), mergeSort(right));
};
const merge = (left, right) => {
   const res = [];
   while (left.length && right.length) {
      if (left[0] <= right[0]){
         res.push(left.shift());
      }
      else{
         res.push(right.shift());
      };
   }
   while (left.length){
      res.push(left.shift());
   };
   while (right.length){
      res.push(right.shift());
   };
   return res;
};
console.log(mergeSort(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   1, 4, 5, 7, 23,
   32, 56, 67, 89
]