#C语言#冒泡排序


冒泡排序是数组的一个应用


冒泡排序——

升序排序为例冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序


题目——【来源于慕课网】班级成绩中,老师把前十名的挑出来了,用冒泡排序把分数排序

//展示每一次变化的过程
#include <stdio.h>
int main()
{
	int arr[] = {94,95,93,96,30,59,02,34,32,43};
	int i,j;
	int p;
	for(i=0;i<10;i++)
	{

		printf("%d ",arr[i]);
		

	}printf("\n \n");
	for(i=8;i>=0;i--)
	{
		for(j=0;j<=i;j++)
		{
			if(arr[j]>arr[j+1])
			{
				int temp;
				temp = arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
			
			for(p=0;p<10;p++){
				printf("%d ",arr[p]);
				
			}
			printf("\n");
		}
	}
	printf("\n排序之后\n");
	for(i=0;i<10;i++)
	{
		printf("%d ",arr[i]);
	}
	}

得到的结果是

//每一次左边重头再来 右边变已经逐渐开始满足
94 95 93 96 30 59 2 34 32 43	//对整个数组遍历输出

94 95 93 96 30 59 2 34 32 43	//a[0]不满足条件 不动
94 93 95 96 30 59 2 34 32 43	//a[1]满足条件
94 93 95 96 30 59 2 34 32 43
94 93 95 30 96 59 2 34 32 43	//a[1]满足条件
94 93 95 30 59 96 2 34 32 43
94 93 95 30 59 2 96 34 32 43
94 93 95 30 59 2 34 96 32 43
94 93 95 30 59 2 34 32 96 43
94 93 95 30 59 2 34 32 43 96	
//最高位96第一次确认
93 94 95 30 59 2 34 32 43 96
93 94 95 30 59 2 34 32 43 96
93 94 30 95 59 2 34 32 43 96
93 94 30 59 95 2 34 32 43 96
93 94 30 59 2 95 34 32 43 96
93 94 30 59 2 34 95 32 43 96
93 94 30 59 2 34 32 95 43 96
93 94 30 59 2 34 32 43 95 96	
//最高位96第一次确认
93 94 30 59 2 34 32 43 95 96
93 30 94 59 2 34 32 43 95 96
93 30 59 94 2 34 32 43 95 96
93 30 59 2 94 34 32 43 95 96
93 30 59 2 34 94 32 43 95 96
93 30 59 2 34 32 94 43 95 96
93 30 59 2 34 32 43 94 95 96

30 93 59 2 34 32 43 94 95 96
30 59 93 2 34 32 43 94 95 96
30 59 2 93 34 32 43 94 95 96
30 59 2 34 93 32 43 94 95 96
30 59 2 34 32 93 43 94 95 96
30 59 2 34 32 43 93 94 95 96

30 59 2 34 32 43 93 94 95 96
30 2 59 34 32 43 93 94 95 96
30 2 34 59 32 43 93 94 95 96
30 2 34 32 59 43 93 94 95 96
30 2 34 32 43 59 93 94 95 96

2 30 34 32 43 59 93 94 95 96
2 30 34 32 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96

2 30 32 34 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96
2 30 32 34 43 59 93 94 95 96

排序之后
2 30 32 34 43 59 93 94 95 96
--------------------------------
Process exited after 3.13 seconds with return value 3
请按任意键继续. . .


在这里插入图片描述
研究一下其中最关键的代码部分

	for(i=8;i>=0;i--)	\\控制每行比较的最大下标
						\\第一行结束的时候a[9]已经是确定的了
	{
		for(j=0;j<=i;j++)	\\控制每次相邻元素比较的下标
		{
			if(arr[j]>arr[j+1])	\\判断并交换
			{
				int temp;
				temp = arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值