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