基數排序思想:
利用個十百千等位數數字進行排序,不經過資料之間比較,
以下**純手擼,實現起來還是比較簡單的,不過是第一次實現,不追求效率,只求實現。
真個實現主要邏輯分為兩步,第一步把原始資料按照位數大小分配到二維陣列中,第二步再把二維陣列中資料按順序取出到原始陣列中,完成一次各位排序;接下來就是迴圈,依次完成百千位排序。
public static void main(string args)
for (int i = 0; i < arr.length; i++)
system.out.println("----------------------------------");
long a = system.currenttimemillis();
int array = radissort(arr);
long b = system.currenttimemillis();
system.out.println(b - a + "毫秒");
for (int i = 0; i < arr.length; i++)
}public static int radissort(int array)
if (array[i] < min)
}int arr = new int[10][array.length];
// 取整變數
int shifting = 1;
// 取整數 迴圈結束條件為取整變數小於原始陣列最大值一位
while (shifting < max)
// 第一次取個位 取完之後取十位 以此類推
shifting *= 10;
//再次把二維陣列中的資料從新取出存放到原始陣列 為了下一輪位數的排序做準備
int index1 = 0;
//外迴圈代表一維陣列
for (int i = 0; i < arr.length; i++) }}
}return array;
}
演算法 排序之基數排序
基數排序也是穩定的內排序。因為它的實現是基於內部使用了穩定的排序實現的所以基數排序整體是穩定的,而且時間複雜度為o n 舉個例子 現在我們將一些3 多 位數排序,如果你說直接判斷就好的話,那你就太天真了,因為那就又變成看o nlgn 或者o n 如何能降低時間複雜度變成o n 呢?那就要使用線性時間...
排序演算法之基數排序
首先從多排序碼排序開始介紹基數排序。以撲克牌排序為例。每張撲克牌有兩個 排序碼 花色和面值。其有序關係為 如果把所有撲克牌排成以下次序 2,a,2,a,2,a,2,a 這就是多排序碼排序。排序後形成的有序序列叫做字典有序序列。一般情況下,假定有乙個n個元素的序列 v 0,v1 vn 1 且每個元素v...
排序演算法之基數排序
如果我們要排序的資料具有多個關鍵字域,那就可以採用基數排序的方法了。基數排序的主要思想是 假如參加排序的元素最高具有d位,有的數沒有d位那麼多,則在其欠缺的高位補0,將元素先按最低位 設最右邊的位為最低位 的值進行排序,然後按次低位進行排序.最後進行最高位的排序。基數排序如果想達到理想的目的,必須滿...