複習到了快排,簡單練一下筆
阿新 • • 發佈:2018-11-30
#include<iostream> #include<cstdlib> using namespace std; int a[20]; int len; int partion(int low ,int high){ int i,j; int key=a[low];//以low作為初始樞紐點 while(low<high){ while(low<high&&a[high]>=key)high--;//高階應該都比樞紐點值大 a[low]=a[high];//比樞紐點值小的移至低端 while(low<high&&a[low]<=key)low++;//低端應該都比樞紐點的值小 a[high]=a[low];//比樞紐點值大的移至高階 } a[low]=key;//更新樞紐點 return low;//返回更新後樞紐點的位置 } void qsort(int low,int high){//快排用遞迴實現
if(begin>=end)return; int key=partion(low,high); qsort(low,key); qsort(key+1,high); } int main(){ int i,j; cin>>len; for(i=1;i<=len;i++)cin>>a[i]; qsort(1,len); for(i=1;i<=len;i++)cout<<a[i]<<endl; system("pause"); return 0; }