冒泡排序(Bubble Sorting) 的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始) , 依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部。经过一轮排序,数组中最大的元素位于数组的最后,经过两轮排序,数组中第二大的元素位于数组倒数第二个位置,依次类推,经过 数组长度-1 次排序,数组排序完成。
优化:如果发现有一趟排序没有交换,说明序列已经有序。
public void sort(int[] arr){
for (int i = 0; i < arr.length - 1;i++){
boolean flag = false; //表示一轮排序中是否发生过交换
for (int j = 0;j < arr.length - 1 - i; j++){
if (arr[j] > arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (flag == false){
break;
}
}
}