幾種排序演算法 (快速排序 堆排序)

2021-08-18 22:29:25 字數 2346 閱讀 4813

快速排序

#include

usingnamespacestd;

voidqsort(inta,intlow,inthigh)

intfirst = low;

intlast = high;

intkey = a[first];/*用字表的第乙個記錄作為樞軸*/

while(first < last)

a[first] = a[last];/*將比第乙個小的移到低端*/

while(first < last && a[first] <= key)

a[last] = a[first];

/*將比第乙個大的移到高階*/

}

a[first] = key;/*樞軸記錄到位*/

qsort(a, low, first-1);

qsort(a, first+1, high);

}

intmain()

;

qsort(a, 0,sizeof(a) /sizeof(a[0]) - 1);/*這裡原文第三個引數要減1否則記憶體越界*/

for(inti = 0; i <sizeof(a) /sizeof(a[0]); i++)

return0;

}

堆排序//整理節點time:o(lgn)

template

void minheap(t *arry, int size, int element)

else

lchild = temp * 2 + 1, rchild = lchild + 1;

}if (lchild < size &&arry[lchild] < arry[temp])       //只有左子樹

swap(arry[lchild], arry[temp]);

return;

//堆排序time:o(nlgn)

template

voidheapsort(t*arry,intsize)

while(size>0)//拆除樹

return;

}

幾種排序,希爾排序,快速排序,堆排序,歸併排序

因為最近看了一點stl,所以用vector代替了陣列,從別的地方借鑑了很多,只是簡單的實現,也沒有做什麼優化,其實也不會 include include includeusing namespace std void print vectorv swap v left v high quick so...

演算法排序 快速排序,堆排序,歸併排序

31.快速排序 是對氣泡排序的一種改進,其基本思想是選取乙個記錄作為樞軸,經過一趟排序,將整段序列劃分為兩個部分,其中一部分的值都小於樞軸,另一部分都大於樞軸,然後繼續對這兩部分進行排序,從而使整個序列達到有序。1 我們從待排序的記錄序列中選取乙個記錄 通常第乙個 作為基準元素 稱為key key ...

排序演算法之快速排序 歸併排序,堆排序

一趟排序 取區間內第乙個元素作為基準,將該元素放在適當的位置,此時基準數左邊的數都比它小,基準數右邊的數都比大。接下來便用同樣的方法分別對左右兩邊的資料進行排序,直到序列中沒有元素或只有乙個元素。int partition int a,int low,int high a low temp retu...