資料結構與演算法之快速排序

2021-07-16 06:30:51 字數 830 閱讀 2181

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