使用ES實現乙個基數排序

2021-09-24 17:36:04 字數 1815 閱讀 2859

現給定一組資料:如下圖

1、進行第一次分配【根據個位數字分配】

2、將第一步分配好的資料取出

3、將一次取出的資料進行再分配【根據數字的十位數進行分配】

4、第二次取出資料

5、進行第三次分配【根據數字的百位數進行分配】

6、三次取出

7、規律總結:我們發現,分配的次數是陣列元素的最大的內個數的位數決定的,所以,我們要取到這個數字,並求出它是幾位數。

8、**階段:

對 "桶"的實現我們使用乙個二維陣列加乙個一維陣列組合來實現資料訪問。

下面:show code

const

array

=(index1,index2)

=>

}return a;};

const

radixsort

=(arr)

=>

}//計算最大的數字是幾位數

let maxlength =

string

(max)

.length;

//用於臨時儲存資料的陣列/二維

let temp =

array(10

,arr.length)

;//用於記錄temp中響應的陣列中存放的數字的數量

let counts =

newarray(10

);//根據最大長度的數字位數決定比較的次數

for(

let i =

0,n=

1;i,n*=10)

; temp[ys]

[counts[ys]

]= arr[j]

; counts[ys]+=1

;}//記錄元素需要存放的位置

let index =0;

//取出元素

for(

let k =

0;k)//重置counts

counts[k]

= undefined;}}

}};const

main=(

)=>

;main()

;

測試結果如下:

9.需要注意是:上面"桶"的實現並不是只有這乙個方法,js 陣列的定義未初始化的元素為 undefined,二維陣列的定義值得學習交流。。。

10.如有不妥之處,還請指教。。。

c 實現基數排序

以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...

基數排序 佇列實現

基數排序是一種不需要比較就能實現排序的演算法思維,主要步驟為分配和收集的過程,重複這個過程於最大數的位數後,排序結束。以下是完全以佇列模擬桶的分配收集過程。標頭檔案 單鏈表部分 typedef int elemtype typedef struct lnode lnode,linklist int ...

python 實現基數排序

由桶排序改進來的 從最低位到最高位依次桶排序 最後輸出最後排好的列表 def radixsort list,d for k in range d d輪排序 每一輪生成10個列表 s for i in range 10 因為每一位數字都是0 9,故建立10個桶 for i in list 按第k位放入...