您的位置:首页 > 编程语言 > Java开发

Java 实现各种排序算法并测试排序效率

2015-01-21 10:24 459 查看
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

效率差距很大啊!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: