冒泡排序(Bubble Sort)
只操作相邻的两个数据,每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足让它两互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。
eg:对于一组数据 4、5、6、3、2、1
第一次冒泡的过程:经过了 5 次比较,此时 3 已经在正确的位置了,即每一次冒泡在至少有一个位置会调整到最终的位置,对于 6 个数据最多 6 次冒泡完成所有排序
六次冒泡后的结果:其实这个是可以优化。当某次冒泡操作已经没有数据交换时候,说明已经达到完全有序,不需要执行后续的冒泡操作。
优化:由于 n 个数据完成排序的次数是小于等于 n 的,所以当在小于 n 次可以完成,那么再冒泡就会多余。所以可以设置一个标志位,当某次冒泡扫描完所有的数后没有发生数据交换说明此时已经排好,直接跳出即可。
详细代码:
//冒泡排序,n表示数组大小
public void bubbleSort(int[] arr,