1. 快速排序的**實現如下:
#include using namespace std;
template void sort(t* data, size_t head, size_t tail);
templatesize_t partition(t* data, size_t head, size_t tail);
template void myswap(t& data1, t& data2);
static size_t count = 0;
int main (int argc, char *argv)
; for(size_t i = 0; i < 10; i++)
coutelse if(tail - head > 1)
}template size_t partition(t* data, size_t head, size_t tail)
if(data[head] <= flag)
head ++;
if(data[tail] >= flag)
tail --;
}return tail;
}template void myswap(t& data1, t& data2)
2. 快速排序的改進:
(1)隨機生成或三數取中獲取flag數;
(2)當拆分的陣列減小到一定程度時使用插入排序。
stl中的排序演算法可以用仿函式來自定義比較函式,也可以在自定義資料型別中過載《操作符。
sort() 封裝了快速排序演算法,並且通過內插對快速排序的最壞情況進行了改進。
資料結構與演算法之快速排序
快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 ...
資料結構與演算法 排序演算法之六 快速排序
一 快速排序 排序演算法中的奧斯卡,諾貝爾獎,當屬快速排序!快速排序是20世紀十大演算法之一!1 基本思想 前面提到氣泡排序,它是一種交換排序,堪稱最慢的排序演算法。可是,物極必反,快速排序是氣泡排序的公升級加強版,同屬於交換排序類。以 空間 換時間,快速排序不是相鄰元素的交換,而是加大了比較和交換...
資料結構排序演算法之快速排序
快速排序 includeusing namespace std void swap int arr,int i,int j void quicksort int arr,int left,int right arr i temp quicksort arr,left,i 1 quicksort ar...