算法思想:
1、每次循环比较相邻两个数,第一个若比第二个大,交换位置
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
2、每次循环会得到该循环中最大的数放在最后,下一次循环的时候这个数不会再进行比较
即内层循环 for(j=0;j<n-i-1;j++)
//i=0, j=5-0-1=4 ;
//i=1,j=5-1-1=3;
//i=3,j=5-3-1=1; 最后一次循环,比较一次剩余两数的大小
3、一共循环数组长度-1次,即外层循环for(i=0;i<n-1;i++),长度-1 次
![](https://img-blog.csdnimg.cn/img_convert/14bb5d52d04341444e178f7bab89ae7c.gif)
int main()
{
int i,j,n,temp,arr[10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
}
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/b048e9efb3b05c1c9a26d8edc0d38fb0.png)