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上也刷到過,而且對於陣列的快排,真是從大學到研究生一直都要求必須掌握的重點知識,然而自己不斷的思考,卻發現所謂的快排,比我以前想象的要複雜的多,因為快排的思想非常幹練,但是形式,或者說具體實現千變萬化,為了達到萬變不離其宗,筆...