java排序,效率高的是哪种排序方法31
发布网友
发布时间:2023-11-19 20:08
我来回答
共5个回答
热心网友
时间:2024-11-02 05:01
和所有其他语言是一样的。应该还是快速排序效率最高。
public static void bubbleSort(int a[]) {
int len = a.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
public static void selectSort(int a[]) {
int temp = 0;
int len = a.length;
for (int i = 0; i < len - 1; i++) {
int min = a[i];
int index = i;
for (int j = i + 1; j < len; j++) {
if (min > a[j]) {
min = a[j];
index = j;
}
}
temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
public static void insertSort(int a[]) {
int len = a.length;
for (int i = 1; i < len; i++) {
int temp = a[i];// 待插入的值
int index = i;// 待插入的位置
while (index > 0 && a[index - 1] > temp) {
a[index] = a[index - 1];// 待插入的位置重新赋更大的值
index--;// 位置往前移
}
a[index] = temp;
}
}
public static int partition(int a[], int low, int height) {
int key = a[low];
while (low < height) {
while (low < height && a[height] >= key)
height--;
a[low] = a[height];
while (low < height && a[low] <= key)
low++;
a[height] = a[low];
}
a[low] = key;
return low;
}
public static void quickSort(int a[], int low, int height) {
if (low < height) {
int result = partition(a, low, height);
quickSort(a, low, result - 1);
quickSort(a, result + 1, height);
}
}
测试结果
------------------------------------------
测试数据10000
冒泡排序:120ms
选择排序:32ms
插入排序:20ms
快速排序:7ms
------------------------------------------
测试数据100000
冒泡排序:13098ms
选择排序:2334ms
插入排序:1264ms
快速排序:23ms
效率差距很大啊!!!!
热心网友
时间:2024-11-02 05:02
看具体情况使用.顺序排列,索引最快是LinkedList,有插入操作的是ArrayList
Verctor是同步的,安全,性能较低
热心网友
时间:2024-11-02 05:01
你百度一下快速排序。它是左右两边同时排序的,效率很高。
热心网友
时间:2024-11-02 04:58
和所有其他语言是一样的。应该还是快速排序效率最高。
热心网友
时间:2024-11-02 04:57
具体情况具体分析。。。
数据基本有序了用冒泡最快了
归并排序占用空间
适用于对空间要求不高的场合
堆排序情况也跟归并差不多
但也与堆的实现有关系
快速排序一般来说很好,适用于数据量大的情况
数据量少的话还是别用了
有时反而不如O(n^2)的排序方法