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 ]