干货 | 冒泡排序
Posted ITeam学生专业社团
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货 | 冒泡排序相关的知识,希望对你有一定的参考价值。
Algorithm
冒泡排序 /基本思想
每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
我们来举个例子
将95、26、14、73、57这5个数
进行从大到小的排序
既然需要从小到大排序
就要求越大的数越靠后
比较/campare
首先比较第一位和第二位,发现95比26大,则需要将95与26的位置交换,交换后的排序为26、95、14、73、57;
接着比较第二位和第三位,发现95比14大,则需要交换95与14的位置,交换后的排序为26、14、95、73、57;
接着比较第三位和第四位,发现95比73大,则需要交换95与73的位置,交换后的排序为26、14、73、95、57;
最后比较第四位和第五位,发现95仍比57大,则需要交换95与57的位置,交换后的排序为26、14、73、57、95。
经过四次比较后,我们发现最大的一个数已经就位,是不是很神奇呢。
现在我们来捋一捋刚才比较的过程。每次都是比较相邻的两个数,如果后面的数比前面的数小,则交换这两个数的位置。一直比较下去直到最后两个数比较完毕后,最小的数就在最后一个了。就如同是一个气泡,一步一步往后“翻滚”,直到最后一位。所以这个排序的方法有一个很好听的名字——冒泡排序。
这样,在第一趟的最后,最大的那个数将会被移动到最右端,即倒数第一位,那么接下来,我们只需要找出倒数第二、倒数第三、倒数第四、倒数第五位,即第n-i位(i为趟数),并让他们依次归位即可完成排序。
事实上,五个数字只需要进行四趟排序归位,最后一个未归位的必定是最小的数字,无须再进行比较,所以n个数字,只需要进行n-1趟排序。
重复以上步骤走完第二趟,第三趟,第四趟,可以得到排序结果:14、28、57、73、95。
我们可以用一个双重循环来实现这个过程,外循环控制趟数,内循环用于相邻两个数的比较,如果它们的顺序错误就把它们交换过来。
话不多说,上代码
Summary
最后我们总结一下,如果有n个数进行排序,只需将n-1个数归位,也就是说要进行n-1趟操作。而每一趟都需要从第一位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归为的书,已经归位的数则无须在进行比较。
上手练练吧!
图文|蔡沛基
排版|蔡沛基
初审|新闻组
终审|詹国荣
以上是关于干货 | 冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章