import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
class Main {
public static void main(String[] args) {
int arr[] = {3, 9, -1, 10, -2};
int[] datagram = randomData(24000);
upgradeBubble(datagram);
}
public static int[] randomData(int extension) {
int i = 0;
int[] datagram = new int[extension];
while (i < extension) {
datagram[i] = ((int) (Math.random() * extension)) + 1;
i++;
}
return datagram;
}
public static String statisticTime() {
return new SimpleDateFormat("HH:mm:ss").format(new Date());
}
public static String statisticMills(){
return System.currentTimeMillis() + "";
}
public static void originalSort(int[] arr) {
int temp = 0;
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第一趟排序的数组:");
System.out.println(Arrays.toString(arr));
for (int j = 0; j < arr.length - 1 - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第二趟排序的数组:");
System.out.println(Arrays.toString(arr));
for (int j = 0; j < arr.length - 1 - 2; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第三趟排序的数组:");
System.out.println(Arrays.toString(arr));
for (int j = 0; j < arr.length - 1 - 3; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第四趟排序的数组:");
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
int temp = 0;
int len = arr.length - 1;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.printf("第%d趟排序的数组\n", i + 1);
System.out.println(Arrays.toString(arr));
}
}
public static void upgradeBubble(int[] arr) {
int temp = 0;
int len = arr.length - 1;
boolean flag = false;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len - i; j++) {
if (arr[j] > arr[j + 1]) {
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
if (!flag) {
break;
} else {
flag = false;
}
System.out.printf("第%d趟排序的数组\n", i + 1);
System.out.println(Arrays.toString(arr));
}
}
}