經典排序之 快速排序

2022-06-22 03:12:15 字數 1054 閱讀 2413

想利用這一兩天覆習一下幾個經典的排序演算法,今天先來看一下快速排序:

我們知道快速排序的思想是:先找到乙個樞軸,然後進行分塊,將其中元素比樞軸小的元素放到樞軸左邊,將比他大的放到他的右邊,這樣我們就完成了一遍基本排序。我們確定了乙個數字在排好序的位置;之後利用遞迴再將樞軸左邊的資料分塊,將右邊的資料分塊即可

演算法實現:

1 #include2

using

namespace

std;34

void swap( int &m, int &n)910

int partition(int *data, int begin, int

end)

1516

int key =data[begin];

17int pos =begin;

1819

for(int index = begin + 1; index < end; index++)24}

2526

swap(data[begin], data[pos]);

27return

pos;

28}

2930

void quicksort(int *data, int begin, int

end)

3435

int index =partition(data, begin, end);

36if(index >begin)

39if(end >index)42}

4344

intmain(); //測試程式可行性

46int len = sizeof(num) / sizeof(int

);47

48 quicksort(num, 0

, len);

49for(int i = 0; i < len; i++)

5253

return0;

54 }

經典排序演算法之快速排序

快排的思想是遞迴。一趟下來,比基數小的都在基數的左邊,比基數大的都在基數的右邊,然後分別對基數左邊的數進行遞迴,對右邊的數進行遞迴 當需要遞迴的元素只有乙個時,結束遞迴。public class quicksort quicksort arr,0,arr.length 1 for int a arr...

經典排序演算法之快速排序

快速排序就是通過一趟排序將原資料分成兩部分,其中一部分關鍵字都比另一部分小,接下來再對這兩部分分別使用快速排序,這裡有遞迴的思想。快速排序的平均時間複雜度為o nlgn 所以適合資料量較大的情況,但快排需要頻繁的對資料位置的操作,故不適合鏈式儲存資料。function sortquick arr,s...

經典演算法之快速排序

說明 快速排序是目前公認最快的排序方法之一。大部分情況都表現得很好,但當必須考慮最壞情況時,快速排序不可接受,因為時間達到o n2 思路 快速排序的基本思想是在數列中找出適當的軸心,將數列分成左右兩部分 左半部分的元素都小於右半部分的元素 然後分別對兩部分進行排序 重複選擇軸心,劃分左右部分的過程 ...