快速排序 遞迴

2021-10-12 03:25:23 字數 743 閱讀 2239

//因為最近時間問題,該部落格待完善

快速排序,時間複雜度:理想的情況是,每次劃分所選擇的中間數恰好將當前序列幾乎等分,經過log2n趟劃分(一次劃分演算法從兩頭交替搜尋,直到low和hight重合,因此一次劃分演算法的時間複雜度是o(n);),整個演算法的時間複雜度為o(nlog2n)。最壞情況:o(n2)。

快速排序很好理解,不過原始碼寫起來如果不參考書籍的話可能需要耗費一定時間去思考,我就沒有參考書籍.下面就是我用遞迴寫的快速排序,僅供參考.

#include

#include

#include

/**輸入隨機數列元素個數,自動生成並排序

*/using

namespace std;

intspeedsort

(int

* p,

int*low,

int* high)

;int

main()

intspeedsort

(int

* p,

int*low,

int*high)}}

if(y1 < low -1)

speedsort

(p, y1, low -1)

;if(y2 > low +1)

speedsort

(p, low +

1, y2)

;return0;

}

你的贊就是我不託更的動力(●』◡』●)

遞迴 快速排序 快速排序

問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...

排序 快速排序 遞迴

快速排序的遞迴寫法,總共寫了四種方法 兩個雙指標法 挖坑法 hoare法 快速排序的時間複雜度為o nlogn 表現為不穩定的演算法 快速排序的陣列在交換或者覆蓋的過程中,相同的數字可能會出現位置的變換 快排相當於二叉樹的前序遍歷 void swapargs int pa,int pb int ho...

快速排序 遞迴實現

快速排序演算法 用到了 分治法 遞迴演算法 package com.xiahui public class quicksort quicksort quicksort new quicksort quicksort.quicksort a,0,6 for int i 0 i a.length i p...