排序算法耗時測試
- 影響因子 電腦的CPU
- 隨機的數據(比較小)
- 結果可參考
普通排序算法 冒泡排序
/**
* 冒泡排序
*
* @param arr
*/
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]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
普通排序算法 選擇排序
/**
* 選擇排序
*
* @param arr
*/
private static void selectSort(int[] arr) {
int length = arr.length;
int temp = 0;
int minIndex;
for (int j = 0; j < length - 1; j++) {
minIndex = j;
for (int i = j; i < length - 1; i++) {
if (arr[minIndex] > arr[i + 1]) {
minIndex = i + 1;
}
}
temp = arr[minIndex];
arr[minIndex] = arr[j];
arr[j] = temp;
}
}
快排
/**
* 快速排序
* @param arr
* @param low
* @param high
*/
public static void quickSort(int[] arr, int low, int high) {
int i, j, temp, t;
if (low > high) {
return;
}
i = low;
j = high;
temp = arr[low];
while (i < j) {
while (temp <= arr[j] && i < j) {
j--;
}
while (temp >= arr[i] && i < j) {
i++;
}
if (i < j) {
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
arr[low] = arr[i];
arr[i] = temp;
quickSort(arr, low, j - 1);
quickSort(arr, j + 1, high);
}
調用
public static void main(String[] args) {
int[] arr = new int[1000000];
for (int i = 0; i < 1000000; i++) {
Random random = new Random();
int addNum = random.nextInt(200);
arr[i] = addNum;
}
long startTime = System.currentTimeMillis();
quickSort(arr, 0, arr.length - 1);
// bubbleSort(arr);
//selectSort(arr);
long endTime = System.currentTimeMillis();
System.out.print("\n sort time is :" + (endTime - startTime) + "\n");
}
統計結果(毫秒值)
算法 | 1000 | 10000 | 100000 | 1000000 |
---|---|---|---|---|
快速排序 | 0 | 2 | 28 | 565 |
選擇排序 | 2 | 49 | 4701 | 474916(卡死h好久) |
冒泡排序 | 3 | 98 | 12838 | 沒敢測試 |