每次從頭開始(每次結束可以不到最後,因為上一次已經確定最大值在末尾了),比較相鄰兩個數,每次下沉乙個最大值。
123
4567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
36#include
usingnamespacestd;
voidbubblesort(inta,intlength)
}if(swapflag ==false)}}
intmain() ;
bubblesort(array,9);
for(inti = 0; i < 9; i++)
return0;
}將數插入到已排序陣列中。
123
4567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
32#include
#include
usingnamespacestd;
template<classt>
voidinsertsort(
vector
<t> &vec)
vec[j] = tmp;}}
intmain()
;vector
<int> intvec(array, array + 9);
insertsort(intvec);
for(
vector
<int>::
iterator
iter = intvec.begin(); iter != intvec.end(); iter++)
}縮減增量排序,特殊的插入排序,每個增量的排序都是插入排序。
是結束位,
right-1
是倒數第乙個數。
intpivot = v[low];
//第乙個值作為中樞值。
while(low < high)
else
}swap(v[low], v[left]);
//將中樞值與不大於中樞值的最大值交換,至此,
v[low]
是本次排序中樞值,
low左邊的數都不大於中樞值,
low右邊的數都不小於中樞值。
常用排序演算法總結(2) 非比較排序演算法
主要有氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。在一定條件下,它們的時間複雜度可以達到o n 需要三個陣列 待排序陣列 int arr new int 輔助計數陣列 int help new int max min 1 該陣列大小為待排序陣列中的最大值減最小值 1 輸出陣列 int...
各種排序演算法總結和比較
各種排序演算法的總結和比較 1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於 1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成 2部分,一部分都大於支點資...
各種排序演算法比較和總結
選擇排序 遍歷陣列,遍歷到i時,a0,a1.ai 1是已經排好序的,將ai從ai 1開始向前和每個比較大小,如果小於,則將此位置元素向後移動,繼續向前比較,如果不小於,則放到正在比較的元素之後。從演算法思想可以看出,當相等元素比較時,原來靠後的元素經過比較後還是在後邊,所以插入排序是穩定的def i...