알고리즘 시간이 많이 걸리는 테스트를 정렬
- 컴퓨터의 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");
}
통계 결과 (밀리 초)
연산 | 1,000 | 10000 | 100000 | 1000000 |
---|---|---|---|---|
빠른 정렬 | 0 | 이 | (28) | 565 |
선택 정렬 | 이 | 49 | (4701) | 474916 (시간은 오랫동안 붙어) |
버블 정렬 | 삼 | 98 | 12838 | 테스트를 감히하지 않았나요 |