C 七大排序實踐

2021-10-23 17:09:32 字數 2794 閱讀 1602

氣泡排序

選擇排序

插入排序

希爾排序

歸併排序

快速排序

堆排序

#include

using

namespace std;

#include

#include

void

swap

(vector<

int>

&array,

int first,

int second)

void

printf

(vector<

int>

&array)

cout << endl;}/*

array: vector型陣列

size: 陣列長度array.size()

特點: 從大到小排序

*///氣泡排序

void

bubblesort

(vector<

int>

&array,

int size)}}

}//選擇排序(氣泡排序的一種改進)

void

selectsort

(vector<

int>

&array,

int size)}if

(max != i)

swap

(array, i, max);}

}//插入排序(類似與打撲克牌,從左到右整理牌)

void

insertsort

(vector<

int>

&array,

int size)

array[j +1]

= temp;

//退出迴圈後,將插值放入正確位置 }}

//輔助函式,希爾排序(引數:子串行,步長,起點)

void

insert

(vector<

int>

&array,

int step,

int size)

array[j + step]

= temp;}}

//希爾排序

void

shellsort

(vector<

int>

&array,

int size)

//輔助函式

void

merge

(vector<

int>

&arr,

int start,

int mid,

int end)

else

if(right > end)

//跟上面同樣道理

else

if(tmp[left - start]

<= tmp[right - start]

)//左區間小於有區間值時候

else}}

//歸併排序

void

mregesort

(vector<

int>

&array,

int start,

int end)

/* 快排思想:分治+遞迴;單次迴圈就是在幹1件事,即是把base不

斷推動到陣列的中間位置,從而使得base左右兩邊相對有序;

然後在進行分治遞迴,在子串行中重複這個操作。它與歸併排

序分治操作相反,這個自上而下分治,相對就是自下而上。

*///快速排序(起點,終點)

void

quicksort

(vector<

int>

&array,

int start,

int end)

//當跳出上述迴圈表示找到乙個數小於flage

swap

(array, left, right)

;//更新base位置,此時left就是表示base位置

while

(array[left]

>= base && left < right)

//當跳出迴圈表示找到乙個數大於flage

swap

(array, left, right)

;//更新base位置,此時right就是表示base位置

}quicksort

(array, start, left -1)

;quicksort

(array, left +

1, end);}

void

find

(vector<

int>

&array,

int father,

int size)

else

break;}

}//堆排序:利用大頂堆或者小頂堆思想

void

heapsort

(vector<

int>

&array,

int size)

}void

test

(void);

printf

(t);

}void

main()

;heapsort

(array, array.

size()

);//quicksort(array, 0, array.size() - 1);

printf

(array)

;system

("pause");

return

;}

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...

七大排序演算法

七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...

七大排序演算法

首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...