目录
冒泡排序:
代码实现:
思路分析:
冒泡排序优化:
冒泡排序(稳定):
想要数据从小到大排序。
代码实现:
public static void bubbleSort(int[] arr) {
//趟数
for (int i = 0; i < arr.length - 1; i++) {
//每一趟的比较的次数
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
swap(arr,j,j+1);
}
}
}
}
private static void swap(int[] arr,int i,int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
思路分析:
首先,冒泡排序是让数据从下标位置与他的下一个下标的数据对比,因为是想要数据从小到大排序,所以这段代码每一趟都能把当前最大数据放到最后面,意思是最后一个数据已经有序了,所以每一趟的比较次数都少一次。
冒泡排序优化:
public static void bubbleSort(int[] arr) {
//趟数
for (int i = 0; i < arr.length - 1; i++) {
boolean flu = false;
//每一趟的比较的次数
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
swap(arr,j,j+1);
flu = true;
}
}
if( !flu) {
break;
}
}
}
private static void swap(int[] arr,int i,int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
定义一个 flu ,如果 if(!flu) 语句被执行了,证明flu还是 flase,没进入交换 if (arr[ j ] > ar[ j + 1])语句,证明已经是有序了。