最近有學習基數排序(桶排序),先寫下簡單的一次性桶排序。
方法://排序陣列a,假象桶bucket,臨時存放陣列tmp ,需要方法tmp=a.clone()
1.複製陣列 tmp=a.clone();
2.設定桶的長度bucket.length= a.max-a.min+1 ;
3.將數字放入桶中並記錄數字放入次數 ;
4.調整桶最終的記錄次數;
4.根據桶的記錄將臨時陣列裡的資料按順序放回原陣列中
public class bucketsort ;
public static void main(string args) ;
system.out.println("排序前:");
for (int b : a)
int min = 1, max = 9;
int tmp = new int[a.length];
tmp = a.clone();// 複製陣列臨時存放
int bucket = new int[max - min + 1];// 建立桶
/* 排序過程 */
// 將數字放入桶中
for (int i = 0; i < a.length; i++)
/** 調整每個桶記錄的次數
* 因為每個桶能放的資料是依次增大的
* 所以每個桶最後記錄的次數=自己原來記錄的次數+前面的所有桶記錄的次數
* 依次疊加即可
*/for (int k = 1; k < bucket.length; k++)
// 按照桶記錄的資料將臨時陣列的資料按順序放回原來的陣列中
for (int h = 0; h < a.length; h++)
/* 排序過程end */
system.out.println("排序後:");
for (int b : a)
}}// end
桶排序學習
將待排序陣列按照大小分別放入n個桶,然後對各桶內資料排序,之後合併。減小總的每次排序的規模,用空間換時間。元素值域的劃分,也就是元素到桶的對映規則。對映規則需要盡量保證元素分散均勻,否則當所有資料集中在同乙個桶中時,桶排序失效。排序演算法的選擇。桶排序演算法的複雜度和穩定性,都根據選擇的排序演算法不...
排序 桶排序
首先,桶排序是一種簡單並且執行快的一種排序。第一步,對五個數進行排序。程式如下 include using namespace std int main 首先對陣列進行歸零 for int j 1 j 5 j 將輸入的數的個數存入陣列中。for int k 1 k 10 k 執行原理 桶排序,就是先...
演算法學習03 桶排序
首先遍歷陣列,找到最大值與最小值,設定乙個長度為最大值 最小值 1的陣列,再次遍歷這個陣列,以當前值 最小值作為下標,將該下標的計數器增1。掃瞄一遍計數器陣列,按順序將值收集起來。舉個例子 nums 2,4,3,4,7 遍歷一次陣列,找到陣列元素的最小值與最大值分別為2和7,那麼我們設定乙個長度為7...