冒泡算法排序

一:冒泡算法的主要实现方式:两个相邻的数字进行比较,继而根据代码所实现的功能进行排序。

eq:下面我们以char arr[] = {9,8,7,6,5,4,3,2,1,0}这个数组进行升序排列并打印为例。

思路:两个相邻的数字比较,如果arr[0] > arr[1],则arr[0]储存的数据和arr[1]所储存的数据进行交换,这样不停的比较和交换直到实现所想要的效果。

二:错误代码实例。

错误原因:数组名本质上是首元素的地址,地址应该使用指针接受,所以arr看似是一个数组,本质上是一个指针变量。因此在bubble_sort()调用函数中int sz = sizeof(arr) / sizeof(arr[0]),sizeof(arr)计算的是arr[]一维数组的首元素的地址,单位是字节,所以sizeof(arr)计算的数值根据环境不同而不同,×86环境中计算的数值为4,所以sz = 1。第一层for 循环 i = 0时,循环次数是 i < 0 次,条件不满足,调用函数无法实现,打印结果原样输出。

三:解决方法及正确代码

将求数组的长度(sizeof(arr) / sizeof(arr[0]))放在主函数内部求

四:代码分析

第一层for循环:       for( i = 0; i < sz-1; i++),其中sz-1表示第sz-1次排序循环完成

第二层for循环:       for( j = 0;  j < sz-1-i ; j++),表示每一次排序循环中相邻的数据需要比较多少次

int sz = sizeof(arr) / sizeof(arr[0]),表示求数组arr的长度

主函数的for循环:  for( i = 0; i < sz; i++)将每一个数组所储存的数据打印出来。

         

本期题解就结束了,我们下期再见,留个点赞和关注,防止下次找不到了,关注小蓝不迷路 。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值