C++自定義數組長度的快速排序

jopen 9年前發布 | 619 次閱讀 C/C++

#include<stdio.h>

include<stdlib.h>

/tannnn/ void Swap(int &a,int &b) { int temp=a;a=b;b=temp; }

int Partition(int a[],int p,int r) { int i=p,j=r+1; int x=a[p]; while(true) { while(a[++i]<x&&i<r);//從左掃到右,找到第一個大于x的 while(a[--j]>x);//從右掃到左,找到第一個小于x的 if(i>=j) break;//判斷下標i,j,當i大于或等于j時,循環結束。 Swap(a[i],a[j]);//交換a[i],a[j] } a[p]=a[j]; a[j]=x; return j; }//此時已a[j]為基點,左邊的都小于或等于a[j],右邊的都大于或等于。

void QuickSort(int a[],int p,int r) {
if(p<r){ int q=Partition(a,p,r);//分割點 QuickSort(a,p,q-1);//遞歸排序 QuickSort(a,q+1,r); } }

int main() { int a[]={}; int i=0,n; printf("請輸入待排列數組的個數:"); scanf("%d",&n); printf("請輸入待排列數組:"); for(i=0;i<n;i++) scanf("%d",&a[i]);
QuickSort(a,0,n-1); for(i=0;i<n;i++) printf("%d ",a[i]); system("pause"); }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!