基數排序法(Java實現)

2021-08-26 23:48:20 字數 782 閱讀 9246

class

demo

; //呼叫基數排序函式

lsd_radixsort(arr,3);

//輸出排序後的陣列

for(int i=0;i" ");}}

//arr是要排序的陣列,max是陣列中最大的數有幾位

public

static

void lsd_radixsort(int arr,int max)

//分別統計第k位是0,1,2,3,4,5,6,7,8,9的數量

//以下便稱為桶

//即此迴圈用來統計每個桶中的資料的數量

for(int i=0;icount[getfigure(arr[i],k)]++;

}//利用count[i]來確定放置資料的位置

for(int i=1;icount[i] = count[i] + count[i-1];

}//執行完此迴圈之後的count[i]就是第i個桶右邊界的位置

//利用迴圈把資料裝入各個桶中,注意是從後往前裝

//這裡是重點,一定要仔細理解

for(int i=arr.length-1;i>=0;i--)

//將桶中的資料取出來,賦值給arr

for(int i=0,j=0;i//此函式返回整型數i的第k位是什麼

public

static

int getfigure(int i,int k)

;return (i/a[k-1])%10;

}}

Java實現基數排序

在眾多的排序方法中基數排序比較特殊,它是一種不需要進行關鍵字之間比較的排序方法,利用多關鍵字的劃分,逐漸將待排序列排好序。舉個例子 現在有陣列 278,109,63,930,589,184,505,269,8,83 第一次根據各位數將陣列劃分為10個佇列 當然其中的某些佇列可能不含有元素 0 930...

基數排序(java實現)

將所有待比較數值 正整數 統一為同樣的數字長度,數字較短的數前面補零。然後,從最低位開始,依次進行一次排序。這樣從最低位排序一直到最高位排序完成以後,數列就變成乙個有序序列。參考文章 點我 時間複雜度 基數排序中r為基數,d為位數。時間複雜度為o d n r 空間複雜度 對於任何位數上的基數進行 裝...

Java實現基數排序

基數排序不同於之前所介紹的各類排序,前邊介紹到的排序方法或多或少的是通過使用比較和移動記錄 元素 來實現排序,而基數排序的實現不需要進行對關鍵字的比較,只需要對關鍵字進行 分配 與 收集 兩種操作即可完成。例如對無序表 進行基數排序,由於每個關鍵字都是整數數值,且其中的最大值由個位 十位和百位構成,...