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

Sắp xếp theo cơ số - JavaScript

Sắp xếp theo Radix

Sắp xếp theo cơ số là một thuật toán sắp xếp sắp xếp dữ liệu với các khóa số nguyên bằng cách nhóm các khóa theo các chữ số riêng lẻ có cùng vị trí và giá trị quan trọng.

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các ký tự làm đối số duy nhất. Hàm sẽ sắp xếp mảng theo thứ tự tăng hoặc giảm bằng cách sử dụng thuật toán sắp xếp cơ số.

Ví dụ

Sau đây là mã -

const arr = [45, 2, 56, 2, 5, 6, 34, 1, 56, 89, 33];
const radixSort = (arr = []) => {
   const base = 10;
   let divider = 1;
   let maxVal = Number.NEGATIVE_INFINITY;
   while (divider === 1 || divider <= maxVal) {
      const buckets = [...Array(10)].map(() => []);
      for (let val of arr) {
         buckets[Math.floor((val / divider) % base)].push(val);
         maxVal = val > maxVal ? val : maxVal;
      }
      arr = [].concat(...buckets);
      divider *= base;
   };
   return arr;
};
console.log(radixSort(arr));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

[
   1, 2, 2, 5, 6,
   33, 34, 45, 56, 56,
   89
]