核心思想:假设有数组有n个元素,每进行一次遍历,就将最大值放到数组末尾,每一次遍历就有一个数的位置不再改变。
原理:
①比较相邻的两个元素。如果第一个比第二个大则交换他们的位置。
②从数组的开始一直到末尾,依次对每一对相邻元素都进行比较。这样,值最大的元素就通过交换到了数组的末尾,完成第一轮遍历排序。
③重复上一步,继续从数组开头依次对相邻元素进行比较。已经到末尾元素不用比较。
④继续从数组开始进行比较,每轮比较会有一个元素的位置不在改变。每轮需要比较的元素个数会递减,一直到没有任何一对元素需要比较,则数组排序完成。
代码实现:
// 8.冒泡排序,所谓的冒泡就是不断把较小值交换到数组最前端,较大值交换到数组末端的操作
public static void bubbleSort(int[] arr) {
// 最外层循环表示一共要遍历的次数。每进行一次遍历,就有一个元素到达了最终位置
// 当待排序的数组只剩下一个元素时,整个数组已经有序,不需要再进行遍历了
for (int i = 0; i < arr.length - 1; i++) {
boolean isSwaped = false;
// 最内层循环表示相邻的两两元素之间的大小关系,若前一个元素 > 后一个