算法分析
按从小到大的顺序进行排序
1.比较相邻两个元素值的大小,若前大于后,则交换,直至结尾,得到最大的数,存于数组最后
2.继续进行上述操作,直至数组结尾-1
3.继续进行步骤1,直到数组中只有一个数字需要比较时,结束
还是恰代码叭
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 3, 9, -1, 10, 20};
System.out.println("排序前");
System.out.println(Arrays.toString(arr));
bubbleSort(arr);
System.out.println("排序后");
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
int temp = 0;
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]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
// System.out.println("第" + (i + 1) + "次排序后的数组");
// System.out.println(Arrays.toString(arr));
}
}
}
优化冒泡:如果在某一趟排序中,一次交换都没有发生,则提前结束排序(设置flag,判断是否发生交换)
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 3, 9, -1, 10, 20};
System.out.println("排序前");
System.out.println(Arrays.toString(arr));
bubbleSort(arr);
System.out.println("排序后");
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
int temp = 0;
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]) {
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
// System.out.println("第" + (i + 1) + "次排序后的数组");
// System.out.println(Arrays.toString(arr));
if (!flag)
break;
}
}
}