冒泡排序
让编程改变世界
Change the world by program
冒泡排序
记得小甲鱼在讲《零基础入门学习Python》的时候,在讲《零基础入门学习C语言》的时候,在讲《零基础入门学习Delphi》的时候, 在这些编程语言的讲解中,都不约而同的会提及冒泡排序算法。
那么作为《数据结构和算法》排序章节要讲的第一个内容,那肯定非冒泡排序不可了!
冒泡排序的基本思想是:两两相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
冒泡排序的实现在细节上可以有很多种变化,我们从最原始的说起,刚刚的这一种是大部分初学者容易一下子就写出来的,但注意,严格意义上来说并不符合冒泡排序的定义!
大家看到了,因为它并不满足”两两比较相邻记录“的指导思想!我们来看下正宗的冒泡算法演示:冒泡排序.swf
冒泡排序的要点:
1. 两两注意是相邻的两个元素的意思
2. 如果有n个元素需要比较n-1次,每一轮减少1次比较
3. 既然叫冒泡排序,那就是从下往上两两比较,所以看上去就跟泡泡往上冒一样。
我们一起来动手实现“正宗的”冒泡排序算法并比较两者的效率差异吧!
我们惊奇的发现其实两者效率木有不同丫!但是按理论来说,正版的东西应该比较有优势才对丫……
嗯,没错,有些朋友发现了,我们这个正宗的版本其实是还有升级的潜力的!
就像咱鱼C论坛的终身VIP会员一样,随着教学服务的不断增加,价值也在不断上升!
优化冒泡排序算法
我们发现如果使用正宗的冒泡排序算法,当i等于1执行完的时候,我们发现程序只进行两两相邻元素的比较,而不用进行任何移动,所以完全可以不用再继续循环。
有些朋友就可能就会说了,那屌丝版的冒泡排序难道就不能这么操作吗?!(看,屌丝版的冒泡排序每一次循环都是指定的元素跟其他每一个元素依次进行比较,如果没有发生移动,只能证明该元素比其他元素小,但完全说明不了其他元素之间的关系,对吧?!)
O~K~这节课就讲解到这里,非常感谢大家的支持。
...... 省略,具体请看视频讲解 ......
[buy]
获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/BdsUAwIFUwAY9vhSb4b']视频下载[/Downlink]
[Downlink href='http://urlxf.qq.com/?m2iuAnA']备胎下载[/Downlink]