算法这条路,是自己目前下定决心去学习,所以,不管遇到多少困难,都希望自己能够坚持下去!还有一年即将面临择业,望付出自己的努力。嘿嘿,不矫情,开始正式的讲解。 —–雷钝
冒泡排序
冒泡排序就是像自然中冒泡的现象一样,把数据排好序。解释如下。
想象有一个直上直下的圆筒,圆筒中装满了水。水中竖直悬浮着大大小小的气泡,圆筒中每个位置有且只有一个气泡。气泡由于浮力的作用,会不断地往上浮。每次从最下面的气泡开始,如果这个气泡碰到上面比它小的气泡,它就和这个小的气泡交换位置;如果这个气泡碰到上面比它大的气泡,它就保持不动,然后那个大的气泡接替它,继续这样往上浮,直到碰到圆筒最上面,已经排好序了的都比它大的气泡为止。随着气泡们这样不断地上浮,最终圆筒中的气泡,会变成大气泡在上,小气泡在下的排好序的形式,冒泡排序完毕。可以看见,越大的气泡,越会快速地上升到圆筒的顶端,这正好和气泡越大,往上冒的速度越快的自然现象不谋而合。这又让你不得不佩服取名者的智慧。
一图胜千言。上面的解释,再结合下面的动态图,相信你会更加明了。相信在未来的某一天,你会一说冒泡排序,就会想到自然界中的冒泡现象,自然而然地写出冒泡排序算法。
问题提出:
将以下数据升序排列:9, 2, 8, 6, 4
冒泡排序原理:
冒泡排序就是遍历数据,每次只与下一个数字比较,如果这两个数顺序不对,则与交换过来。
就上面那个问题来说,因为要升序排列,所以数字越大越排在后面。则两个数比较的时候,如果后一个数比当前数小,则顺序不对,要将这两个数交换。遍历的过程如下图:
Step1:第一次比较第一和第二个数字,9与2相比较,9比2大,顺序不对,则交换位置。
Step2:第二次比较第二与第三个数字,因为9换到了第二位,则9与8比较&#