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