Raptor-冒泡排序法

20 篇文章 2 订阅

1.问题描述

对20个20到100范围的随机整数进行从小到大排序操作(使用冒泡排序法)

2.问题思路

  • 首先,20个数据我们需要用一维数组来进行数据存储
  • 其次,我们要让每个数据在20到100之间,并且是整数,这就涉及到了任意范围随机数的生成问题,具体可以看我之前博客里面Raptor中生成任意范围随机数那一部分
  • 然后,我们需要用冒泡排序法进行排序操作(关键步骤,本篇教学内容)
  • 最后,我们需要注意一下数据的展示问题,这不是关键步骤,只是为了让结果更好看一些

3.实现过程

为了让主程序更简洁以及模块化设计,我们多用子图和子程序,这个问题里面我们用到初始化数据子图,展示数据子图和冒泡排序法排序的子程序。关于子图和子程序的用法请见 Raptor-子图与子程序

  1. 初始化数据
    这个子图实现了得到长度为20的一维数组,并且数组中的元素是20100之间的整数,这个表示的是左闭右开区间[20,100)。
    这里写图片描述

  2. 冒泡排序
    冒泡排序法是基于交换来进行排序的方法,本题是从小到大排序,所以是两两比较,如果前面的是较大的数据,把前面的数据交换到后面去,假如数组的长度是n,那么我们从1遍历到n-1,那么第一趟比较完毕后,第n个数一定是最大的;第二趟我们只需要从1遍历到n-2,那么第二趟比较完毕后,第n-1个数一定是倒数第二大的,依次这样操作就可以完成排序。

冒泡排序法中,关键字较小的,就想气泡一样,每次向上漂,也就是排在前面,而关键字较大的,就是石块一样,每次向下沉,也就是排在后面,并且能保证,每一躺排序都有石块沉底,这就是为什么叫冒泡排序法

举例说明:
假如n=7,有七个数,数组名为a,每次我们比较a[j]和a[j+1],a[j]>a[j+1],我们交换a[j]和a[j+1]的数据
原数据:
49 38 65 97 76 13 27
第一趟:
循环变量j从1到6,第7个数是前7个数里面最大的
38 49 65 76 13 27 97
第二趟:
循环变量j从1到5,第6个数是前6个数里面最大的
38 49 65 13 27 76 97
第三趟:
循环变量j从1到4,第5个数是前5个数里面最大的
38 49 13 27 65 76 97
第四趟:
循环变量j从1到3,第4个数是前4个数里面最大的
38 13 27 49 65 76 97
第五趟:
循环变量j从1到2,第3个数是前3个数里面最大的
13 27 38 49 65 76 97
第六趟:
循环变量j从1到1,第2个数是前2个数里面最大的
13 27 38 49 65 76 97

总结规律,可以得到,n个数排序我们需要遍历n-1躺,如果我们记循环变量为i,则外层循环i从1到n-1,对于每一趟来说,我们需要进行n-i次比较,并且我们保证n-i+1是前n-i+1个数里面最大的

实现流程:
第一部分:
part1
第二部分:
part2

  1. 展示数据
    我们需要展示排序前的数据和排序后的数据,因此主程序的逻辑如下图:

主程序:
main

展示数据子图:
show

结果:
result

4.说明

以上是关于冒泡排序法从小到大排序的,从大到小排序的很简单,就是把比较这一步a[j] > a[j+1],改成a[j] < a[j+1]就好了。


以上就是关于Raptor中冒泡排序法的内容,需要程序、代做程序或者有什么问题请联系QQ545030769

  • 53
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪无痕是个小疯子

您的鼓励将促使我的创作更有价值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值