演算法導論 7 1快速排序

2021-07-04 06:48:57 字數 957 閱讀 8759

1:**:

方法一:普通方法。從j開始向前搜尋,找到第乙個小於key的值a[j],交換a[i]和a[j]

從i開始向後搜尋,找到第乙個大於key的值a[i],交換a[i]和a[j]

直到i=j,對兩邊的資料再分組分別進行上述過程,直到不能再分組為止。

*//*

#include

using namespace std;

void quicksort(int a,int p,int r)

int i=p,j=r;

int key=a[p];

while(i=key)

a[i]=a[j];

while(i

//using namespace std;

////int n;

////void swap(int &a, int &b)

////

//void print(int *a)

////

//int partition(int *a, int p, int r)

////    }

//    swap(a[i+1], a[r]);

////    cout << "排序過程:";

//    print(a);

//    return i+1;

//}//

//void quicksort(int *a, int p, int r)

////}

////int main()

//#include

using namespace std;

int n;

void print(int a)

quicksort(a,0,n);

cout<<"最終結果:";

print(a);

return 0;

2:時間複雜度:平均情況:o(nlgn);最壞情況:o(n2)

快速排序 演算法導論

對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 的排序演算法。雖然最壞情況時間的複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是o nlgn 而且o nlgn 中隱含的常數因子非常小,另外,它還能夠進行原址排序,甚至在虛存環...

演算法導論 快速排序

既然敢叫 快速排序 必然有其過人之處。事實上,它確實是最快的通用內部排序演算法。它由hoare於1962年提出,相對歸併排序來說不僅速度快,並且不需要輔助空間。對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 2 的排序演算法。雖然最壞情況時間複雜度差,但是快速排序通常是實際排...

《演算法導論》 快速排序

最近和朋友聊天,聊到企業面試時考了一道鍊錶的快排,這道題在leetcode上也刷到過,而且對於陣列的快排,真是從大學到研究生一直都要求必須掌握的重點知識,然而自己不斷的思考,卻發現所謂的快排,比我以前想象的要複雜的多,因為快排的思想非常幹練,但是形式,或者說具體實現千變萬化,為了達到萬變不離其宗,筆...