基礎演算法題複習之一 快速排序

2021-08-25 02:37:50 字數 938 閱讀 6026

先對排序演算法來個總結: 

其中不穩定的有:快,選,希,堆

時間複雜度為o(nlogn)的有:快,歸,堆,   其中後兩者的平均最好和最壞的時間複雜度都一樣,而快速排序的最差複雜度為o(n^2),即初始排序為完全逆序的時候,所以快速排序的效能是會受到初始排序的影響的;

即穩定時間複雜度又低的最優排序演算法應該是歸併排序,但是歸併演算法的空間複雜度為o(n)

希爾排序的平均,最好,最壞的時間複雜度都不一樣

除了歸併排序和快速排序,其他排序演算法的空間複雜度都是o(1)

快速排序是不穩定的排序,演算法複雜度為o(nlogn);

#include#include#include#includeusing namespace std;

//快速排序

int partition(vector& nums, int low, int high)

swap(nums[low],r);//在low位置前的都小於r,在low位置後面的都大於r;

return low;

}void quicksort(vector& nums,int low,int high)

; quicksort(nums,0,nums.size()-1);

return 0;

}

基礎演算法複習 快速排序

1.最近一直在忙課程,每天只能抽空刷幾道leetcode,好久沒看js了.有點慌,但是先抽空把排序演算法啥的寫一遍吧,等忙完作業系統課設再好好複習js.2.快速排序演算法思想大概就是設定乙個基準值,根據基準值不斷地交換陣列中前後的元素值,在此過程中目的是把基準值排序到最終的位置,再對基準值位置之前和...

排序演算法之一 快速排序

1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。1 預排序的輸入非常常見,因此不要選擇第乙個數作為基準數 2 隨機數的生成也較為昂貴 3 採用三數中值分割法 取左中右三個元素的中值作...

ACM道路之一 基礎演算法(快速排序)

快速排序 qsort 本質是分治思想 排序的一次劃分演算法從兩頭交替搜尋,直到low和high重合,因此其時間複雜度是o n 而整個快速排序演算法的時間複雜度與劃分的趟數有關。快速排序三個步驟 1 確定區域,左邊界 l 右邊界 r 基準值 x l r 2 2 保證區間內,x左側的任意值小於x,x右側...