c語言排序
冒泡法排序:
排序過程:
(1)比較第一個數與第二個數,若為逆序a[0]>a[1],則交換;然後比較第二個數與第三個數;依次類推,直至第n-1個數和第n個數比較為止——第一趟冒泡排序,結果最大的數被安置在最後一個元素位置上
(2)對前n-1個數進行第二趟冒泡排序,結果使次大的數被安置在第n-1個元素位置
(3)重複上述過程,共經過n-1趟冒泡排序後,排序結束
例:
int main() { int a[11],i,j,t; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1]; a[i+1]=t;} printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); }
簡單選擇法排序:
排序過程:
(1)首先通過n-1次比較,從n個數中找出最小的, 將它與第一個數交換—第一趟選擇排序,結果最小的數被安置在第一個元素位置上
(2)再通過n-2次比較,從剩餘的n-1個數中找出關鍵字次小的記錄,將它與第二個數交換—第二趟選擇排序
(3)重複上述過程,共經過n-1趟排序後,排序結束
int main() { int a[11],i,j,k,x; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) { k=i; for(j=i+1;j<=10;j++) if(a[j]<a[k]) k=j;
if(i!=k) { x=a[i]; a[i]=a[k]; a[k]=x; } } printf("The sortednumbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); }
最後更新:2017-04-03 05:40:23