关于选择、冒泡排序的思考
2007-09-27 09:10
309 查看
记得大一老师刚讲选择排序与冒排序的时候,我们只知道死记硬背:两个 for 语句的循环,以及一段交换语句。两者之间的差别老师只是说选择是将大的数选项出来,而冒泡则只是将较小的数依次从下排像冒水泡一样一层层地冒出来。也不知道是不是老师不知道它们之间的真正区别,还是老师怕讲得太深了,怕我们这些刚接触语言的学生不懂,也许是后者吧。
后来再学《数据结构》,老师只是说:选择、冒泡排序在以前的课中已经讲过,课上就不讲了,同学们下去要复习一下。再后来,我考程序员时,问同学选择、冒泡排序究竟有什么区别,同学只是说:冒泡是将较小的数一层层地冒出来,而选择则是选择较大的。问了几个同学,答案竟然是出其的一致。我曾试着写出这两段小程序,结果是写出来了,可怎么看怎么不顺眼,和书一对比,虽然可以正确地输出结果,但却完全地错了,我只能又死记住了这两段程序。现在又在考软工,我又问了同学相同的问题,结果和上次完全相同。所以我只好尝试自己去解决问题。经过查阅资料,才发现,它们之间的区别主要有两点:
一、 选择排序是第 I 个元素可以和第 I+1、第I+2…第 n-1个元素比较并交换(如果符合条件);而冒泡排序则是第 I 个元素只可以和第 i+1 个元素比较并进行交换(如果符合条件)
二、 是要特别注意两个 for 语句的初始条件。选择排序:外循环初始值是侍排序列第 I 个元素或第 n-I 个元素,内循初始值是待排序列的第 i+1 个元素或第 n-i-1个元素;冒泡排序:外循环初始值是待排序列的首元素或尾元素,而内循环初始值与外循环相同。
千万要记住两种排序皆可执行升序或降序排序。写到这里,也许你也明白了吧。
后来再学《数据结构》,老师只是说:选择、冒泡排序在以前的课中已经讲过,课上就不讲了,同学们下去要复习一下。再后来,我考程序员时,问同学选择、冒泡排序究竟有什么区别,同学只是说:冒泡是将较小的数一层层地冒出来,而选择则是选择较大的。问了几个同学,答案竟然是出其的一致。我曾试着写出这两段小程序,结果是写出来了,可怎么看怎么不顺眼,和书一对比,虽然可以正确地输出结果,但却完全地错了,我只能又死记住了这两段程序。现在又在考软工,我又问了同学相同的问题,结果和上次完全相同。所以我只好尝试自己去解决问题。经过查阅资料,才发现,它们之间的区别主要有两点:
一、 选择排序是第 I 个元素可以和第 I+1、第I+2…第 n-1个元素比较并交换(如果符合条件);而冒泡排序则是第 I 个元素只可以和第 i+1 个元素比较并进行交换(如果符合条件)
二、 是要特别注意两个 for 语句的初始条件。选择排序:外循环初始值是侍排序列第 I 个元素或第 n-I 个元素,内循初始值是待排序列的第 i+1 个元素或第 n-i-1个元素;冒泡排序:外循环初始值是待排序列的首元素或尾元素,而内循环初始值与外循环相同。
千万要记住两种排序皆可执行升序或降序排序。写到这里,也许你也明白了吧。
相关文章推荐
- 简单LinuxC程序关于排序问题(冒泡排序与选择排序)
- 关于STP根桥选择过程的思考
- 关于EnableViewState以及页面中选择asp.net服务端控件和HTML控件的思考
- 关于O/R Mapping的思考,我们应该选择什么?
- 关于程序员选择就业单位的一点思考
- 关于2-sat判定求解中“同一组内必须选择”问题的思考
- 关于冒泡排序和选择排序的用法
- 关于本体构造工具选择及其相关思考
- 关于选择生意的朴素思考
- 关于基本的随机选择算法(n选m)的分析与思考
- 黑马程序员_关于选择排序和冒泡排序的复习
- 关于2-sat判定求解中“同一组内必须选择”问题的思考
- c+两种简单的数组排序,冒泡排序和类似选择排序的思考
- 数据库设计---关于建表的时候选择横表和竖表(纵表)的一点思考
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- 数据库设计---关于建表的时候选择横表和竖表(纵表)的一点思考
- 数据库设计---关于建表的时候选择横表和竖表(纵表)的一点思考
- 关于消息推拉流选择问题——思考两天
- 关于O/R Mapping的思考,我们应该选择什么?(转)
- 数据库设计---关于建表的时候选择横表和竖表(纵表)的一点思考