C语言 冒泡算法

泡排序算法的运作如下:

 

1, 比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。

 

2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

 

3. 针对所有的元素重复以上的步骤,除了最后一个。

 

4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

代码实例(⊙o⊙)…

/*方法 冒泡排序!!

原理:遍历和交换

16 25 9 90 23

某个数字小于后面的数字,那么就交换

1 25 16 9 90 23

2 25 16 9 90 23

3 25 16 90 9 23

4 25 16 90 23 9 最小的数字来到了最后

需要比较多轮,(数组长度-1)轮

每一轮的次数较上一轮-1

数组长度-1)-当前的轮数

 */
#include <stdio.h>
#define  n 5  //宏定义
int main ()
{   int i ,j;//循环变量
	int h ;  //用来交换的临时变量
	int nums[n];
	for (i=0;i<n;i++)
	{
		scanf ("%d",&nums[i]);
	}

	//外层循环控制轮数
	for (i=0;i<n-1;i++)
	{   //内层循环控制次数
		for (j=0;j<n-i-1;j++)
		{
			if (nums[j]<nums[j+1])
			{   h=nums[j+1];
			    nums[j+1]=nums[j];
				nums[j]=h;
			}
		}
	}
	printf ("降序输出");
	for (i=0;i<n;i++)
		printf ("%d\t",nums[i]);
	printf("\n");
	for (i=0;i<n-1;i++)
	{   //内层循环控制次数
		for (j=0;j<n-i-1;j++)
		{
			if (nums[j]>nums[j+1])
			{   h=nums[j+1];
			    nums[j+1]=nums[j];
				nums[j]=h;
			}
		}
	}
	printf ("升序输出");
	for (i=0;i<n;i++)
		printf ("%d\t",nums[i]);
	return 0;
}
/*降序输出99      25      23      16      9
升序输出9       16      23      25      99      请按任意键继续. . .
*/
  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C语言冒泡排序是一种简单而常用的排序算法,其中包括用ISBN进行排序的过程。 首先,我们需要理解ISBN的结构和排序规则。ISBN(国际标准书号)是用于标识一本图书的唯一编码。它通常由13位数字组成,其中包括一个校验位。校验位的计算方法涉及到一定的算法,但不影响我们对冒泡排序的说明。 现在,我们假设有一个存储了多本图书ISBN的数组,我们要使用冒泡排序算法按照ISBN从小到大进行排序。 冒泡排序算法的基本思想是通过相邻元素的两两比较和交换来达到排序的目的。具体步骤如下: 1. 从数组的第一个元素开始,将其与下一个元素进行比较。 2. 如果当前元素大于下一个元素,则交换它们的位置。 3. 继续比较下一个元素,直到数组末尾。 4. 重复上述步骤,但这次只对前n-1个元素进行比较,n为数组长度。 5. 重复执行步骤4,直到整个数组有序。 对于ISBN的排序,我们需要将冒泡排序算法与ISBN进行适应。具体步骤如下: 1. 首先,定义一个存储了多个ISBN的整型数组。 2. 使用循环嵌套遍历数组中的每个元素,外层循环控制遍历次数,内层循环控制两两比较和交换。 3. 在内层循环中,将相邻的两个元素进行比较。如果当前元素大于下一个元素,则交换它们的位置。 4. 按照上述步骤重复执行,直到整个数组按照ISBN从小到大排序。 需要注意的是,ISBN中可能存在校验位的情况,但校验位不影响排序过程,因此在排序时可以忽略校验位。 总之,通过使用C语言的冒泡排序算法,我们可以对存储了多个图书ISBN的数组进行排序,按照ISBN从小到大排列。这是一种简单而有效的算法

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值