排序演算法(三)

2021-10-03 16:42:44 字數 650 閱讀 3270

對於輸入的資料x存入標記為x的陣列中,並統計x的個數。

適用於資料範圍小,資料量大的情況。

演算法的步驟如下:

1.找出待排序的陣列中最大和最小的元素

2.統計陣列中每個值為i的元素出現的次數,存入陣列c的第i項

3.對所有的計數累加(從c中的第乙個元素開始,每一項和前一項相加)

4.反向填充目標陣列:將每個元素i放在新陣列的第c(i)項,每放乙個 元素就將c(i)減去1

public class counting 

int d = max - min +1;

//建立⼤⼩為max的臨時陣列

int[

] temp =

newint

[d];

//統計元素i出現的次數

for(

int i =

0; i < n; i++

)int k =0;

//把臨時陣列統計好的資料彙總到原陣列

for(

int i =

0; i < d; i++)}

return arr;

}}

文章

將資料劃分多個範圍相同的區間,每個區間排序,最後合併。

文章

排序演算法(三) 選擇排序演算法

選擇排序演算法首先從序列中選擇乙個元素arr i 通常是第乙個 作為當前最小值,然後把arr i 依次與序列中arr i 之後的元素作比較,如果有元素小於arr i 的,就讓它跟arr i 交換。然後再選擇arr i 1 作為下一輪比較的最小值,然後繼續比較.選擇排序演算法原理很簡單,就是每次把未排...

排序演算法(三)

6 歸併排序 原理 將兩個及以上的有序表合併成乙個有序表。將待排序列分成若干個序列,將各個小序列排成有序,最後合併將整個有序序列。基本思路,開始,將相鄰兩個元素合併成乙個有序序列,然後,相鄰兩個序列再合併成乙個有序序列,不斷迴圈,直到整個序列合併為乙個有序序列。示例如下 實現 public clas...

排序演算法(三)

希爾排序是1959年由d.l.shell提出來的,相對直接排序有較大的改進。希爾排序又叫縮小增量排序。基本思想 基本思想 演算法先將要排序的一組數按某個增量d n 2,n為要排序數的個數 分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,然後再用乙個較小的增量 d 2 對它進行分...