今天我和大家一起讨论下冒泡排序算法
冒泡排序算法,是一种神奇的算法,它是通过将相邻的2个数进行对比,依据从大到小,或者从小到大的顺序进行交换,最后得出排序结果,核心公式是i = n-1,j = n-1-i,i代表要进行多少趟的循环,j代表每趟需要进行多少次两两比较,如果有10个数,那么就只要循环9趟,每趟只需要比较n-1-i次;理论的不说太多,具体如下:
例如这里有10个数:15,32,12,16,90,49,17,26,72,43;我们按照从大到小的顺序排列.
第1趟:
第1次两两比较:2 15 12 16 90 49 17 26 72 43; ? 因为43比72小,所以不用交换
第2次两两比较:32 16 15 12 90?49 17 26 72 43; ?因为72比26大,所以72和26进行交换;
第3次两两比较:32 16 15 12 90 49 26 17 72 43;
第4次两两比较:32 16 15 12 90 49 26 17 72 43;
第5次两两比较:32 16 15 12 90 49 26 17 72 43;
第6次两两比较:32 16 15 90 12 49 26 17 72 43;
第7次两两比较:32 16 90 15 12 49 26 17 72 43;
第8次两两比较:32 90 16 15 12 49 26 17 72 43;
? ? ? ? ? ? ? ?结果:90 32 16 15 12 49 26 17 72 43;
?
通过第一趟(9次两两比较)终于把10个数中的最大的数排在左边了.
?
接下来我们用程序来实现冒泡排序法,还是10个数,还是从大到小的顺序.
运行结果如下图:
?
最后送同学们一句话:编程路漫漫,需其修远兮;遇到难的程序,多单步调试,耐得住寂寞,才守得住繁华!