(排序)P1177 模板 快速排序

2022-07-01 12:33:14 字數 427 閱讀 9399

題解:

這道題用傳統快排(如下所示)的結果就是最後三個點tle:

如果永遠取第乙個元素作為樞軸的話,在陣列已經有序的情況下每次劃分都將得到最壞的結果,時間複雜度退化為o(n^2)。因為其中乙個子串行每次都只比原序列少乙個元素,該側的遞迴深度將達到最大。

#include

using namespace std;

int n,a[1000001];

void swap(int &a,int &b)

void qsort(int l,int r)//應用二分思想

}while(i<=j);//這裡注意要有=

if(l>n;

for(int i=1;i<=n;i++) cin>>a[i];

qsort(1,n);

for(int i=1;i<=n;i++) cout<}

P1177 模板 快速排序

p1177 模板 快速排序 實現快速排序 快速排序的排序思想大致可以分為一下幾部分 以陣列中某乙個數k為標準,通過調整陣列中元素位置,讓陣列中元素的大小分布涇渭分明,左邊小於 等於 k,右邊大於 等於 k。這樣對於整個陣列而言就達到了基本有序的狀態。之所以稱為基本有序,是指左右兩子陣列的相對位置確定...

洛谷 P1177 模板 快速排序

洛谷 p1177 模板 快速排序 1.翻書,該題很容易解決,但不算掌握。2.憑空編寫,邊界點的取值有些問題,等號去還是不取。3.想了乙個辦法,寫出一組資料進行手動模擬,弄明白了,程式再開始根據模擬進行編制。4.很久沒寫快排了,如果能一次性編寫成功,這次可以說快排掌握了。5.開始動手,6.第一次取a ...

洛谷 P1177 模板 快速排序

這道題用傳統快排 如下所示 的結果就是最後三個點tle void swap int a,int b void quicksort int a,int left,int right quicksort a,left,i 1 quicksort a,j 1,right 因為快排對於一些特殊的情況 例如序...