今天比较有兴致,于是把‘选择’,‘插入’,‘冒泡’三种排序再实现了一遍,并对它们的运行时间进行了比较,但是很奇怪,为什么插入排序效率会那么低,不知道自己的code在哪里出问题了,请高手赐教
以下是代码:
public class SortCompare {
publicstaticvoid main(String[] args) {
int size = 100; // 1000 or 10000
selectSort(generateArray(size));
insertSort(generateArray(size));
bubbleSort(generateArray(size));
}
publicstaticint[] generateArray(int size) {
int[] ret =newint[size];
for(int i = 0; i < size; i++) {
ret[i] = (int)(Math.random()*size);
}
return ret;
}
/**
*选择排序
*
*/
publicstaticvoid selectSort(int[] list) {
long start = System.currentTimeMillis();
for(int i = 0; i < list.length; i++) {
int smallest = i;
for(int j = i+1; j < list.length; j++) {
if(list[j] < list[smallest]) {
smallest = j;
}
}
swap(list, smallest, i);
}
long end = System.currentTimeMillis();
System.out.println("select sort time spend: "+(end-start) + " ms");
}
/**
*插入排序
*@paramlist
*/
publicstaticvoid insertSort(int[] list) {
long start = System.currentTimeMillis();
List insertList = new LinkedList();
insertList.add(list[0]);
for(int i = 1; i < list.length; i++) {
int j = 0;
for(j = 0; j < insertList.size(); j++) {
if(list[i] > (Integer)insertList.get(j)) {
continue;
} else {
break;
}
}
insertList.add(j, list[i]);
}
long end = System.currentTimeMillis();
System.out.println("insert sort time spend: "+(end-start) + " ms");
}
/**
*冒泡排序
*@paramlist
*/
publicstaticvoid bubbleSort(int[] list) {
long start = System.currentTimeMillis();
for(int i = 0; i < list.length; i++) {
for(int j = 0; j < (list.length-i-1); j++) {
if(list[j] > list[j+1]) {
swap(list, j, j+1);
}
}
}
long end = System.currentTimeMillis();
System.out.println("bubble sort time spend: "+(end-start) + " ms");
}
/**
*公共方法,交换数组两个索引上的值
*@paramlist
*@paramidxA
*@paramidxB
*/
privatestaticvoid swap(int[] list,int idxA,int idxB) {
int temp = list[idxA];
list[idxA] = list[idxB];
list[idxB] = temp;
}
}
以下是各种数量级输出的时间结果:
100
select sort time spend: 0 ms
insert sort time spend: 16 ms
bubble sort time spend: 0 ms
1000
select sort time spend: 141 ms
insert sort time spend: 266 ms
bubble sort time spend: 172 ms
10000
select sort time spend: 3203 ms
insert sort time spend: 192423 ms
bubble sort time spend: 3844 ms