生成100个9~109的随机数,使用至少两种排序方法完成这一百个排序,记录排序开始时间和结束时间
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test4 {
public static void main(String[] args) {
int size = 100;
int count = 0;
double[] arr = new double[size];
for (int i = 0; i < size; i++) {
arr[i] = 9 * Math.random() + 100;
}
System.out.println("冒泡排序前:" + getCurrentTime());
show(arr);
// 冒泡排序
for (int i = 0; i < arr.length; i++) {
for (int j = i; j < arr.length; j++) {
if (arr[i] > arr[j]) {
double tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
count++;
}
}
System.out.println("冒泡排序后:" + getCurrentTime());
System.out.println("比较次数:" + count);
System.out.println("选择排序前:" + getCurrentTime());
//选择排序
// 总共要经过 N-1 轮比较
for (int i = 0; i < arr.length - 1; i++) {
int min = i;
// 每轮需要比较的次数 N-i
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
// 记录目前能找到的最小值元素的下标
min = j;
}
}
// 将找到的最小值和i位置所在的值进行交换
if (i != min) {
double tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
System.out.println("选择排序后:" + getCurrentTime());
show(arr);
}
private static void show(double[] arr) {
for (double d : arr) {
System.out.print(d + ",");
}
System.out.println();
}
private static String getCurrentTime() {
Date dNow = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss:SSS");
return formatter.format(dNow);
}
}
运行结果: