最最常见的排序-冒泡排序及其优化
核心思想
冒泡的核心思想是两两比较,若前面的比后面的大,则相互交换,一趟下来,最大的数位于最后
代码
5个数两两比较,需要比较4次,因此n个数需要比较n-1次
1 | int a[] = { 3, 2, 7, 1, 5 }; |
第一轮完成后的运行结果如下,最大的数已经沉底
1 | [2, 3, 1, 5, 7] |
因此可以加上一个外层的循环来完成所有排序
1 | int a[] = { 3, 2, 7, 1, 5 }; |
执行完后可以得到打印信息:
1 | [1, 2, 3, 5, 7] |
优化
上面代码虽然可以满足排序的需求,但是本身数据有序或者某块有序,则应该中断排序
可以加入一个标志位,来判断是否有序了,如果标志位不变则表示已经排好序了,则可以中断排序
全部代码如下
1 |
|