快速排序
#include
using
namespace
std;
void
qsort(
int
a,
int
low,
int
high)
int
first = low;
int
last = high;
int
key = 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);
}
int
main()
;
qsort(a, 0,
sizeof
(a) /
sizeof
(a[0]) - 1);
/*這裡原文第三個引數要減1否則記憶體越界*/
for
(
int
i = 0; i <
sizeof
(a) /
sizeof
(a[0]); i++)
return
0;
}
堆排序//整理節點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
void
heapsort(t*arry,
int
size)
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...