排序演算法比較總結

2022-04-08 18:23:59 字數 4009 閱讀 9531

每次從頭開始(每次結束可以不到最後,因為上一次已經確定最大值在末尾了),比較相鄰兩個數,每次下沉乙個最大值。

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...