排序算法比较

      今天比较有兴致,于是把‘选择’,‘插入’,‘冒泡’三种排序再实现了一遍,并对它们的运行时间进行了比较,但是很奇怪,为什么插入排序效率会那么低,不知道自己的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值