1.選擇排序:選擇排序每次從未排序的所有資料中通過比較,選出最小的資料,並將之與未排序資料中的第乙個資料交換位置,然後繼續按照此方法從剩餘的資料中選擇最小的資料,並按照上述方法處理,如此迴圈,直至所有資料排好序。
特性:執行時間和輸入無關。即:即使陣列是有序的陣列,但是它和隨機無序陣列的排序時間相同。
資料移動是最少的,總共用了n次交換。
2.插入排序:插入排序是指每次都按順序從未排序的資料中選擇第乙個資料,並將之通過與已經排好序的資料相比較,將之插入到合適的位置,並將其之後已經排好序的資料都後移移位。
特性:插入排序需要的交換操作和陣列中倒置的數量相同,比較的次數大於等於倒置的數量。
其較適用於部分有序的陣列,排序速度較快。
3.希爾排序:將陣列分為h個子陣列,每個子陣列的資料都是在原陣列中每隔h的資料組成的新陣列,然後分別對每個子陣列進行排序。而後將h減小,在以當前的h按照上述方法繼續排序,直至h值為小於1為止,此時排序完成。
4.歸併排序:歸併是指將兩個有序的陣列歸併成乙個更加大的有序陣列 。
5.快速排序:選取乙個切分點將乙個陣列分為兩個子陣列,是左邊的資料小於切分點,右邊的資料大於切分點,然後再分別選取切分點將兩個子陣列分為更小的兩個子陣列,如此迴圈,直至不可再分為止。
缺點:切分不平衡時,使排序較為低效。
演算法改進:當子陣列較小時,不再使用快速排序,改為使用插入排序即可。
Blocks一些特性介紹
block特性介紹 import include include using namespace std template void blocktest t pblock static void hi void int main int argc,const char argv intmain in...
演算法 一些線性排序演算法
一 計數排序 使用這個演算法有乙個前提,待排序的陣列a,其所有的元素分布在區間 0,k 該演算法的時間複雜度為o n k 當k o n 時,執行時間為o n 所以當k比較小的時候適合採用這個演算法 下面給出這個演算法實現的 include using namespace std void count...
一些重要的排序演算法
void pigeonholesort byte array,intlength int i,k,j 0 for i 0 i length i b array i for i 0 i 256 i for k 0 k b i k array j i 多一次遍歷的計數排序,排序位元組串的話速度約是鴿巢排...