Java 實現各種排序算法並測試排序效率 – JAVA編程語言程序開發技術文章

 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
效率差距很大啊!!!!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。