冒泡排序
基本知识
基本思想
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数
- 针对所有的元素重复以上的步骤,除了最后一个
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
改进
- 在全部数据中,一旦前面有一个数比后面的大,就一定会发生交换,把大的数换到后面去。 所以我们可以加一个标记,如果某一趟排序没任何交换,则说明整组数据已经全部有序了,此时就可以中断循环,不用再比较
- 第一次循环会把最大的值交换到最后一个位置,第二次循环会把次大的值交换到倒数第二位,以此类推。随着循环的进行,靠后的部分都变为有序的区域,那么,靠后部分我们不必在进行比较
- 每次对整个数据循环我们都只找出了最大值,并且放到了最后的位置,如果我们每次循环既寻找最大值又最小值,并把最大值放到最后,最小值放到最前的位置,就可以进一步优化了