原創 快速排序

2021-07-30 16:28:06 字數 1417 閱讀 5685

在程式中,寫了幾個輔助函式,乙個是用來初始化帶排序陣列的,乙個是用來列印陣列的。好了,廢話不多說了,見**:

首先定義乙個標頭檔案。

1:
2: #include
3: #include
4: using

namespace std;

5:
6: //生成隨機數陣列
7: void createarray(int data,int length);
8: //劃分規則區域
9: int partition(int data,int low, int high);
10: //快速排序
11: void quicksort(int data,int low, int high);
12: //列印陣列
13: void print(int data,int length);
14:
15:

然後實現這些函式。

1:
2: #include "quicksort.h"
3:
4: void createarray(int data,int length)
5:
23:     data[low]=temp;
24:     return low;
25: }
26:
27: void quicksort(int data,int low, int high)
28:
38: }
39:
40: void print(int data,int length)
41:
46:     cout< 

最後在主函式中執行快速排序。

1:

2: #include "quicksort.h"
3:
4: int main()
5:
16:
17:

在實現快速排序時,時間複雜度為o(nlogn),空間複雜度為o(1),因為只使用了乙個臨時變數temp。為了方便,這個快速排序是使用遞迴方法實現的。體到遞迴,我們就應該想到遞迴的弊端。因為使用遞迴會不斷的函式資訊壓入棧中,而棧的空間是有限的,所有如果遞迴層數過大,函式會出現錯誤,所有最好還是用非遞迴方法實現快速排序。本演算法的另乙個優化方法是如何更好地確定關鍵哨兵的位置。上面的方法是每次使用對應空間的最右端的值作為哨兵,但是這樣出現問題,就是我的運氣很差,每次選擇的哨兵不是最小值,就是最大值。所以如果能在選擇哨兵上優化一下,演算法還是可以更優的執行。

好了,今天先寫到這吧,如果有問題,歡迎指正。

快速排序原創精講

1 需要先學會操控指標 陣列玩得轉 2 需要先理解區域性變數和系統變數的區別 3 還需要學會使用遞迴。1 以第乙個數為分界值,小換到左邊,大的換到右邊 2 運用分治思想 對分界值左右兩邊的小陣列依次做類似的事 第一步是乙個不帶遞迴的版本,只有while和if 請大家務必先理解這個再去看第二步。我有幾...

原創 argocd快速安裝

argocd是智慧型管理k8s具體應用的工具,可以實現web控制台操作公升級,回滾,日誌分析,測試跑通,程式啟動失敗則不上線等功能。安裝步驟很簡單 kubectl create namespace argocd 應用後argocd服務會起來 同時安裝argocd的命令列工具,建立使用者修改密碼將會使...

怎樣快速拿到原創功能

但還是要特別感謝支援我的這37個人,因為你們的關注支援和點讚,我才能夠完成這小小的目標。自己的總結 無論如何最重要的堅持每天發布一篇中篇文章,必須是原創,而且不能斷更,不能兩天大魚三天曬網,覺得自己寫的不錯的可以 到朋友圈,刷一刷閱讀量和點讚數,另外還要和粉絲互動回覆訊息,自己用心經營,每天登陸兩三...