关于冒泡排序中一个细节的答疑

简介: 【疑问】老师,你好。  关于项目5 排序,根据冒泡法排序以下写法for (i=0;i<number;i++) for(j=0;j<number-i;j++)  就可以,你为什么要这样写:for (i=0;i<number-1;i++) for(j=0;j<number-i-1;j++);   而且,两种写法运行结果一样。 【回答】  很高

【疑问】

老师,你好。

  关于项目5 排序,根据冒泡法排序以下写法

for (i=0;i<number;i++)
  for(j=0;j<number-i;j++)

  就可以,你为什么要这样写:

for (i=0;i<number-1;i++)
  for(j=0;j<number-i-1;j++);

  而且,两种写法运行结果一样。

 

【回答】

  很高兴你能关注到这个细节,这是一个好感觉。对n个数的排序,从冒泡的思想看,需要冒n-1次泡,只剩1个了,自然不用再冒泡,第一层关于i的循环就是控制这的,所以从0到n-2,即i<n-1即可,第二层关于j的循环同理。138页10个数的排序,你要注意到用的是

for(j=0;j<9;j++)
  for(i=0;i<9-j;i++)
  对10个数的排序,我在讲课中用过
for(j=1;j<10;j++)
  for(i=1;i<10-j;i++)

  i和j的初值是1,定义a[11]放10个数,实际a[0]元素是不用的。
  至于你的结果还对,需要上机时单步跟踪一下,多余操作恰好没有破坏已有的正确结果,还是选用的测试数据恰好对此错误无所谓。这实际上给你提醒的是,程序通过编译后,一组数据运行正确,往往还潜藏危机。

  设计测试用例是个技术活,先意识到这一点,后面再长进。程序设计的门道还不少,这是她的魅力所在,继续进步吧。

 

 

 

目录
相关文章
|
4月前
|
搜索推荐 算法 C++
|
6月前
|
搜索推荐 算法 JavaScript
探索冒泡排序:原理、实现与优化
探索冒泡排序:原理、实现与优化
|
6月前
|
搜索推荐 算法 数据处理
从程序设计的角度探索排序算法:冒泡排序的实现与优化
从程序设计的角度探索排序算法:冒泡排序的实现与优化
36 0
|
12月前
|
搜索推荐 Java
冒泡排序算法的Java实现及优化
冒泡排序算法的Java实现及优化
【冒泡排序】模仿qsort的功能实现一个通用的冒泡排序
【冒泡排序】模仿qsort的功能实现一个通用的冒泡排序
74 0
|
算法 搜索推荐
重点算法排序之快速排序、归并排序(上篇)
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
51 0
|
算法 搜索推荐
初阶算法(2):进行详细地介绍插入排序的细节和时间复杂度
初阶算法(2):进行详细地介绍插入排序的细节和时间复杂度
|
算法
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
82 0
算法排序问题。每种排序代表着没中思考问题的方式。我们学习了选择排序,冒泡排序,归并排序。让我们去回顾回顾吧。重在思想的领悟。
算法提炼--冒泡排序的理解(12.4)
算法提炼--冒泡排序的理解(12.4)
|
机器学习/深度学习 搜索推荐 算法
【排序算法】冒泡排序(改进版)的思想分析与代码实现详解
【排序算法】冒泡排序(改进版)的思想分析与代码实现详解
284 0
【排序算法】冒泡排序(改进版)的思想分析与代码实现详解