ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
<hr> <div id="div1"><h3> <font color=red > 基数排序 </font><h3></div> 将所有待比较元素(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从个位开始,进行排序;然后十位,进行排序;以此进行!这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 基数排序两种方法: MSD 从高位开始进行排序 LSD 从低位开始进行排序 ```javascript // LSD Radix Sort // helper function to get the last nth digit of a number var getDigit = function(num,nth){ // get last nth digit of a number var ret = 0; while(nth--){ ret = num % 10 num = Math.floor((num - ret) / 10) } return ret } // radixSort function radixSort(arr){ var max = Math.floor(Math.log10(Math.max.apply(Math,arr))), // get the length of digits of the max value in this array digitBuckets = [], idx = 0; for(var i = 0;i<max+1;i++){ // rebuild the digit buckets according to this digit digitBuckets = [] for(var j = 0;j<arr.length;j++){ var digit = getDigit(arr[j],i+1); digitBuckets[digit] = digitBuckets[digit] || []; digitBuckets[digit].push(arr[j]); } // rebuild the arr according to this digit idx = 0 for(var t = 0; t< digitBuckets.length;t++){ if(digitBuckets[t] && digitBuckets[t].length > 0){ for(j = 0;j<digitBuckets[t].length;j++){ arr[idx++] = digitBuckets[t][j]; } } } } return arr } console.log(radixSort([7, 3, 4, 5, 10, 7, 8, 2])) ```