氣泡排序
選擇排序
插入排序
希爾排序
歸併排序
快速排序
堆排序
#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 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...