用插入排序法對10個數進行降序排列
#define A 10
#include <stdio.h>
int main()
{
int a[A+1],i,j,t;
for(i=1;i<=A;i++)
scanf("%d",&a[i]);
for(i=2;i<=A;i++)
{for(j=i-1;j>=1;i--,j--)
if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}
** else break;**
}
for(i=1;i<=A;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
中間這個 else break;必須要加上嗎?我覺得不用呀,,因為如果不滿足if的話應該能進行下一次循環呀,,,可我去掉之後運行不了。。。為啥
你不覺得你的這個程序已經進入一個死循環了嗎。。。。。那個break只是糾正這個死循環,讓你誤以為程序是沒有問題的,但是實際的問題是:
因為你的i是在循環體外面申明的變量,所以在你的嵌套循環中,裡面循環結束後,i的值都會減小為1,然後外層循環又給i加了1,到了裡面的循環
又減小到1,於是就無限循環了下去。。。。。