java内部排序算法比较程序代码
时间: 2023-08-05 17:39:49 浏览: 49
以下是Java内部排序算法比较的代码示例:
```java
import java.util.Arrays;
import java.util.Random;
public class SortComparison {
public static void main(String[] args) {
int[] arr1 = generateRandomArray(10000); // 生成随机数组
int[] arr2 = arr1.clone(); // 复制数组
long startTime = System.currentTimeMillis(); // 记录开始时间
Arrays.sort(arr1); // 使用Arrays.sort()内置排序算法
long endTime = System.currentTimeMillis(); // 记录结束时间
System.out.println("Arrays.sort()耗时: " + (endTime - startTime) + "ms");
startTime = System.currentTimeMillis(); // 记录开始时间
quickSort(arr2, 0, arr2.length - 1); // 使用快速排序算法
endTime = System.currentTimeMillis(); // 记录结束时间
System.out.println("快速排序耗时: " + (endTime - startTime) + "ms");
}
private static int[] generateRandomArray(int n) {
int[] arr = new int[n];
Random random = new Random();
for (int i = 0; i < n; i++) {
arr[i] = random.nextInt(n);
}
return arr;
}
private static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivot = partition(arr, left, right);
quickSort(arr, left, pivot - 1);
quickSort(arr, pivot + 1, right);
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[left];
int i = left + 1, j = right;
while (i <= j) {
if (arr[i] < pivot) {
i++;
} else if (arr[j] > pivot) {
j--;
} else {
swap(arr, i++, j--);
}
}
swap(arr, left, j);
return j;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
该示例中,使用了Arrays.sort()内置排序算法和快速排序算法,比较了它们的耗时。其中,generateRandomArray()方法用于生成随机数组,quickSort()方法用于实现快速排序算法,partition()方法用于实现快速排序算法的分区,swap()方法用于交换数组中两个元素的位置。