程式設計--Quick Sort 通訊一甲 B09622048 楊穎穆
目錄 1.目的 2.排序原理 3.程式 4.實驗結果顯示 5.參考資料
目的 1. 試輸入n個未排序的整數到陣列中 2. 嘗試把未排序的整數到陣列中之數值依照陣列位置與值印出 3. 嘗試用快速排序(Quick Sort)法把陣列中之數值由小而大地排序 4. 嘗試把排序後的整數到陣列中之數值依照陣列位置與值印出
排序原理 A[0] A[1] A[2] A[3] A[4] 2 8 7 1 3 2 1 3 8 7
程式 #include <stdio.h> #include <stdlib.h> #define n 8 int Partition(int a[],int p, int r){ int j,temp; int x=a[r]; int i=p-1; for(j=p;j<r;j++){ if(a[j]<=x){ i++; if(i !=j){ temp=a[i]; a[i]=a[j]; a[j]=temp; }
temp=a[i+1]; a[i+1]=a[j]; a[j]=temp; printf("\n"); for(j=0;j<n;j++) printf(" %d",a[j]); return i+1; } int quicksort(int a[],int p,int r){ int q; if(p<r){ q=Partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,p);
int main(void){ int t,A[n]; for(t=0;t<n;t++){ printf(" 請輸入任意數字[%d]:",t); scanf("%d",& A[t]); } quicksort(A,0,n-1); printf("\n由小到大排序後的數字[%d]:",t); printf("%d \n",A[t]); system("PAUSE"); return 0;
實驗結果顯示
參考資料 主要的參考資料來至”演算法概論”這本書及王志湖老師上課所教授的內容。
END