直接插入排序
用0號位置作為哨兵,把r[i]放r[0]裡
將待排序的放在陣列裡
for(i從2到length)迴圈,每迴圈乙個i與前面已經排好序的每乙個值比較,如果比第i個數小,則把r[0]插入到第i個數裡面
插入前,每乙個數需要往後移乙個單位再插入
(前插法或後插法都可)
折半插入排序
在原本有序的的序列r[1]中乙個個插入
把r[i]的只放到r[0]當哨兵
for(i從2到length)迴圈,low=1,high=i,mid=(low+high)/2乙個個嘗試
while(low<=high)
(1)當r[i]此時當low=high時,找到需要插入的位置,插到high+1處
把插入位置整體往後移插入r[0]即可
希爾排序
迴圈每一趟增量(從小到大,最後為1)
每一趟增量下間隔的數利用直接插入排序
氣泡排序
迴圈1到len,從1開始到m進行兩兩比較,如果前乙個比後乙個大,則調換順序。每次迴圈後len–,因為相當於後面已經排好了,只需排前面即可)兩層迴圈
如果本趟無交換,那麼下面的就無需進行交換了,用flag來進行記載
void
sort
(int
**d,
int pointssize)
//氣泡排序
m--;//}}}
python
num =[4
,2,7
,42,5
,3,9
,8]for i in
range
(len
(num)-1
):count =
0for j in
range
(len
(num)
- i -1)
:if num[j]
> num[j+1]
: count =
1 temp = num[j]
num[j]
= num[j+1]
num[j+1]
= temp
if count ==0:
break
print
(num)
快速排序
取第乙個數當pivot(中心),用0儲存。
從表的兩端向中間掃瞄,最左為low,最右為high
(1)if r[low]r[pivot], then high左移,把比pivot小的值移到pivot左邊,反之移到右邊
可用遞迴完成,遞迴到low=high結束
**如下
int
partition
(int
*d,int low,
int high)
//分割函式得pivot(第一趟排序)
else
k[low]
= k[high]
;for
(;k[low]
<= pivot;
) k[high]
= k[low];}
k[low]
= k[0]
;//記錄中間的數
return low;}}
intquicksort
(int
*k,int low,
int high)
簡單選擇排序
從r[1]到r[len]比較,i從1開始迴圈到len每次選出最小的數與r[i]進行交換
堆排序先把值全部放在樹里
將建好樹利用篩選法調整堆,調整成大根堆。篩選法: s是2s和2s+1的根,在r[2s]和r[2s+1]選出最大的值與r[s]比較,如果r[s]較小,則交換調整成大根堆,此時再看以r[2s]為結點的根堆是否為大根堆,如果不是則重複上述步驟調整成大根堆。用乙個迴圈for(j=2s;j進行堆排序演算法: 將堆頂元素乙個個與從後往前的結點交換,每一次交換要看是否為大根堆,如果不是則需要調整成大根堆,再進行交換。當迴圈結束是為乙個由大到小的樹,利用層次遍歷(逐一輸出陣列)即可得
歸併排序
把乙個錶用二分法,遞迴兩個由中間切開的表,使兩個表都是有序的。
將兩個有序表每次分別由小到大取出乙個值比較,小的值放入另乙個空表中
基數排序
分配+收集
按最高位優先法或最低位優先法分配和收集交替進行。
內部排序時間複雜度和空間複雜度比較
說明:基數排序中n是每一趟分配的時間複雜度,rd是每一趟分配的時間複雜度,n個記錄,每個記錄有d個關鍵字
十大排序演算法
1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...
十大排序演算法
排序規則 從左至右依次增大 一 基於比較的排序演算法 插入排序 逐個遍歷未排序序列,將其在已排序序列中從右到左比較,直到遇到比自己小的數,然後將元素插入到那個數的後面,有序序列從左向右生長。選擇排序 在未排序序列中選擇最小的元素,將其插入到已排序序列的末尾,有序序列從左向右生長。氣泡排序 從左至右逐...
十大排序演算法
github 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序...