将一组8个实数存入数组,并进行从小到大的排序,排序后输出结果。(冒泡和选择排序都可以)
4条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2021-04-20 20:23关注
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
/*
冒泡排序:
10,8,7,20,30,9,1,50,100,-1
1.循环嵌套
1.外循环排序的轮数;
2.内循环是每一轮的次数
第一轮:
i=0,j=1;
8,10,7,20,30,9,1,50,100,-1
i=0,j=2;
7,10,8,20,30,9,1,50,100,-1
i=0,j=3;
7,10,8,20,30,9,1,50,100,-1
i=0,j=4;
7,10,8,20,30,9,1,50,100,-1
i=0,j=5;
7,10,8,20,30,9,1,50,100,-1
i=0,j=6;
1,10,8,20,30,9,7,50,100,-1
i=0,j=7;
i=0,j=8;
1,10,8,20,30,9,7,50,100,-1
i=0,j=9;
-1,10,8,20,30,9,7,50,100,1
第二轮:
i=1,j=2;
-1,8,10,20,30,9,7,50,100,1
i=1,j=3;
i=1,j=4;
i=1,j=5;
-1,8,10,20,30,9,7,50,100,1
i=1,j=6;
-1,7,10,20,30,9,8,50,100,1
i=1,j=7;
i=1,j=8;
-1,7,10,20,30,9,8,50,100,1
i=1,j=9;
-1,1,10,20,30,9,8,50,100,7
*/
int a[10]={10,8,7,20,30,9,1,50,100,-1};
int i,j,t,k;
printf("排序之前:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
for(i=0;i<10;i++)
{
printf("i=%d,第%d轮:\n",i,i+1);
for(j=i+1;j<=9;j++)
{
if(a[i]>a[j])
{
t=a[i]; //t是临时变量
a[i]=a[j];
a[j]=t;
}
//打印排序过程:
printf("j=%d\t",j);
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
//---------------
}
}
printf("排序之后:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥50 adb连接不到手机是怎么回事?
- ¥15 vs2022无法联网
- ¥15 TCP的客户端和服务器的互联
- ¥15 VB.NET操作免驱摄像头
- ¥15 笔记本上移动热点开关状态查询
- ¥85 类鸟群Boids——仿真鸟群避障的相关问题
- ¥15 CFEDEM自带算例错误,如何解决?
- ¥15 有没有会使用flac3d软件的家人
- ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
- ¥15 docker实践项目