冒泡法排序C语言,输入10个数冒泡法排序c语言

一、冒泡排序原理

冒泡法排序C语言,输入10个数冒泡法排序c语言

二、冒泡排序设计

1、定长序列

冒泡法排序C语言,输入10个数冒泡法排序c语言

算法分析:

对于有n个元素的序列,第i轮:需要经过j次比较交换

i:1..n-1

i+j=n

那么如果序列有4个元素,则需要经过i=4-1=3轮,每轮需要j=n-i次交换,因此

第一轮:i=1,j=1,2,3共三次交换

第二轮:i=2,j=4-2=2=1,2共两次交换

第三轮:i=3,j=4-3=1共一次交换

设计流程:

1)外层FOR循环对应轮数i=1..n-1

2)内层FOR循环对应本轮的次数j=n-i

3)判断相邻元素是否满足顺序规则

如果是,进入下次比较

如果否,则交换元素位置,并进入下次比较。

2、不定长序列

冒泡法排序C语言,输入10个数冒泡法排序c语言

不定长序列的长度n的计算方法:ARRAY【x..y】,则n=y-x+1

定长序列的参数:

  • 序列范围:ARRAY【1..n】
  • 序列长度:n
  • 数组的访问:ARRAY【j】

不定长序列的参数

  • 序列范围:ARRAY【x..y】
  • 序列长度:n=y-x+1
  • 数组的访问:ARRAY【x+j】

外循环加内循环的整体设计流程保持不变,区别在于数组内元素的访问需要进行起始地址的偏移,即x+j作为数组地址。

三、不定长序列冒泡排序程序设计

1、程序接口设计

冒泡法排序C语言,输入10个数冒泡法排序c语言

输入:exe布尔量,启动排序

输入输出:seq序列,采用不定长数组,ARRAY【*】数据类型,排序完成后的序列仍然通过该接口返回。

2、不定长排序程序

冒泡法排序C语言,输入10个数冒泡法排序c语言

在功能块的接口中,序列seq声明的是ARRAY【*】数据类型的变量,因此需要用命令判断边界:

  • 使用Lower_Bound指令,读取ARRAY【*】变量的下边界
  • 使用UPPER_BOUND指令,读取ARRAY【*】变量的上边界

那么变量的长度就是上边界-下边界。

3、整体程序框架

冒泡法排序C语言,输入10个数冒泡法排序c语言

四、算法优化

1、算法优化问题

冒泡法排序C语言,输入10个数冒泡法排序c语言

2、算法优化

冒泡法排序C语言,输入10个数冒泡法排序c语言

原理:

如果序列经过一些轮次的比较交换后,已经提前排行顺序,那么在下一轮中就不会有元素的交换。也就是说,如果再某一类中没有发现元素的交换,就可以判定序列已经完成排序,就可以退出程序。

优化算法的流程设计:

1)设置一个交换标志变量,在开始本轮比较前对交换标志变量进行初始化

2)进入本轮比较时,如果有元素发生交换,则置位交换标志变量。

3)本轮比较完成后,判断交换标志变量是否等于0

  • 如果是,则退出循环程序
  • 如果否,则继续下一轮比较

优化,是优化的轮次。

3、程序

冒泡法排序C语言,输入10个数冒泡法排序c语言

五、小结

冒泡法排序C语言,输入10个数冒泡法排序c语言

之前写过定长的,这次看到这个,又学到东西了。

............试读结束............

查阅全文加微信3231169

如来写作网gw.rulaixiezuo.com(可搜索其他更多资料)

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3231169@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.rulaiwenku.com/323784.html
(0)
上一篇 2023年3月20日
下一篇 2023年3月20日

相关推荐

搜索资料 全部分类 搜索教程
扫码关注

客服代找资料
加客服微信:3231169
私发想要资料的标题/关键词
快速代查找相关所有资料

如来写作网客服微信3231169

立即扫码添加我吧

微信咨询

客服代找资料
加客服微信:3231169
私发想要资料的标题/关键词
快速代查找相关所有资料

如来写作网客服微信3231169

立即扫码添加我吧

返回顶部