时间复杂度O(n^2)
排序800000数据的时间为12秒左右
代码
package com.atguigu.Sort;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
/**
*
* 冒泡排序
*
* 对一维数组 3,1,8,-2,9,-5 进行排序
* 冒泡排序的时间复杂度为n*n
* 排序八万个数据使用时间为12秒左右
*/
public class BubbleSort {
public static void main(String[] args) {
int[] sorts = {3,1,8,-2,9,-5,7,3};
System.out.println("排序前的数组为" + Arrays.toString(sorts));
int[] result = sort(sorts);
System.out.println("排序后的结果为" + Arrays.toString(result));
int length = 80000;
int[] arr = new int[length];
for (int i = 0; i < length; i++) {
arr[i] = (int)(Math.random() * 800000);//生成了length个范围在【0,800000】的随机数
}
Date startDate =new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String startDate1 = sdf.format(startDate);
System.out.println("开始的时间为" +startDate1);
sort(arr);//排序
Date overDate =new Date();
String startDate2 = sdf.format(overDate);
System.out.println("结束的时间为" +startDate2);
}
private static int[] sort(int[] sorts) {
int temp = 0;
boolean flag;
for (int i = 0; i < sorts.length - 1; i++) {
flag = true;
for (int j = 0; j < sorts.length - 1 - i; j++) {
if (sorts[j] > sorts[j + 1]){
temp = sorts[j];
sorts[j] = sorts[j + 1];
sorts[j + 1] = temp;
flag = false;
}
}
if (flag){
return sorts;
}
}
return sorts;
}
}