기수 정렬
6402 단어 javascriptalgorithmsprogramming
Array<Array<Int>>
function getMaxNumOfDigits(arr) {
const max = Math.max(...arr);
if (max === 0) return 1;
// suggest to just memorise this if can't think of the math on the spot
// else just use stringify and get length of string
return Math.floor(Math.log10(max)) + 1;
}
function getDigitByPos(num, pos) {
if (num === 0) return 0;
// e.g.
// num = 1234, pos = 2
// floor(1234 / 10^2) % 10
// floor(1234 / 100) % 10
// = 12 % 10
// = 2
return Math.floor(num / Math.pow(10, pos)) % 10;
}
function RadixSort(arr) {
const arrLength = arr.length;
const maxNumOfDigits = getMaxNumOfDigits(arr);
for(let i = 0; i < maxNumOfDigits; i++) {
const digitsBucket = new Array(10);
for (let j = 0; j < arrLength; j++) {
const digit = getDigitByPos(arr[j], i);
if (!digitsBucket[digit]) {
digitsBucket[digit] = [];
}
digitsBucket[digit].push(arr[j]);
}
arr = digitsBucket.flat();
}
return arr;
}
Reference
이 문제에 관하여(기수 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/henryong92/radix-sort-57p6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)