快速排序:
和歸併排序一樣,用了分治的思想,不過分的有些不同,歸併排序是先把陣列分的很小很小在進行簡單的操作從而達到目的,也就是先分在排序,但是快速排序是先排序再分,我覺得快速排序把數字轉來轉去,其意思就是找到這個數在這個陣列的位置,而且找到就不會變,有些像選擇排序的意思,但是快速排序在比較的過程中沒有為之後的操作做便利,快速排序不像選擇排序那樣固定的找,它把數分成了二類,原來選擇排序每找一次只會在迴圈裡減少一位的操作,但是快速排序直接每次減少了一半,而且運用了分治的方法後把選擇排序要比較的有些浪費的操作大大減少;
#include
void swap(int &x,int &y)
void pr(int a,int l,int n)
int px(int a,int l,int r)
if(flag2)
if(a[nl]<=temp)
nl++;
else
}a[nr]=temp;
// pr(a,l,r);
return nr;
}void pxf(int a,int l,int r)
}int main()
; pxf(a,0,n-1);
pr(a,0,n-1);
return
0; }
基礎排序演算法 快速排序
快速排序大家應該都知道,快速排序是一種不穩定的演算法,運氣差可以降速降到冒泡的速度,運氣好能快到比歸併還快的速度。首先,快速排序需要選擇乙個x,這個數很多人稱為基準。剛開始的時候選擇 a 0 當x,讓i l,j r 剛開始的時候l和r分別為最左邊和最右邊。1 讓j減小,直到遇到 i 或者找到乙個小於...
演算法基礎之排序 快速排序
上一節簡單介紹了一下常用的插入排序,這一節,我們來看看實際中針對大量資料最常用的快速排序演算法。快速排序演算法採用的是一種分治的策略,其的特點就是。快!演算法的平均時間複雜度為o nlog n 快速排序演算法處理公升序排序的思路大致如下 1 選中待排序陣列中最左端的數為參考數 2 從陣列的右端開始向...
基礎排序演算法之快速排序
基礎思想 分治 選首元素作為key值,迴圈比較,比其小的元素放左側,比其大的放右側 分成的兩個數列,遞迴重複上述步驟 include includeusing namespace std 快速排序 時間複雜度 o n log n 從數列取乙個數作為key值 一般取第乙個數 i 從右邊遍歷找到第乙個比...