算法导论-chap2.2-2-选择算法

选择算法排序

伪代码

for i = 1 to A.length-1
    min = i
    for j = i+1 to A.length
        if A[j] < A[min]
            min = j
    temp = A[i]
    A[i] = A[min]
    A[min] = temp  

C语言实现

int len = maxNum;
int inum = 0;
for (int i = 0; i < len-1; i++){
	int min = i;
	for (int j = i+1; j < len; j++) {
		if (A[j] < A[min])
			min = j;
		++inum;
	}
	int temp;
	temp = A[i];
	A[i] = A[min];
	A[min] = temp;
}

执行结果

分别对100/1000/10000个数据进行排序。原始数据采用最糟糕的方式:逆序。执行10此排序算法取平均值。
a.100个数据:100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88,…

[0]exec time: 0.000017 sec, exec:step=4950
[1]exec time: 0.000017 sec, exec:step=4950
[2]exec time: 0.000017 sec, exec:step=4950
[3]exec time: 0.000017 sec, exec:step=4950
[4]exec time: 0.000016 sec, exec:step=4950
[5]exec time: 0.000017 sec, exec:step=4950
[6]exec time: 0.000017 sec, exec:step=4950
[7]exec time: 0.000017 sec, exec:step=4950
[8]exec time: 0.000016 sec, exec:step=4950
[9]exec time: 0.000017 sec, exec:step=4950
average time: 0.000017

b.1000个数据:1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987,
[0]exec time: 0.001904 sec, exec:step=499500
[1]exec time: 0.001642 sec, exec:step=499500
[2]exec time: 0.001428 sec, exec:step=499500
[3]exec time: 0.001263 sec, exec:step=499500
[4]exec time: 0.001237 sec, exec:step=499500
[5]exec time: 0.001190 sec, exec:step=499500
[6]exec time: 0.001196 sec, exec:step=499500
[7]exec time: 0.001152 sec, exec:step=499500
[8]exec time: 0.001158 sec, exec:step=499500
[9]exec time: 0.001181 sec, exec:step=499500
average time: 0.001335

c.10000个数据:10000, 9999, 9998, 9997, 9996, 9995, 9994, 9993, 9992,
[0]exec time: 0.139902 sec, exec:step=49995000
[1]exec time: 0.137477 sec, exec:step=49995000
[2]exec time: 0.140359 sec, exec:step=49995000
[3]exec time: 0.149347 sec, exec:step=49995000
[4]exec time: 0.147227 sec, exec:step=49995000
[5]exec time: 0.131519 sec, exec:step=49995000
[6]exec time: 0.174094 sec, exec:step=49995000
[7]exec time: 0.110892 sec, exec:step=49995000
[8]exec time: 0.152730 sec, exec:step=49995000
[9]exec time: 0.136375 sec, exec:step=49995000
average time: 0.141992

c.pow(10, 5)个数据:
root@ubuntu-14-10-server:# ./a.out 5 10
cal num:100000 averarg num:10
[0]exec time: 10.394296 sec, exec:step=704982704
[1]exec time: 11.703293 sec, exec:step=704982704
[2]exec time: 11.124986 sec, exec:step=704982704
[3]exec time: 11.135266 sec, exec:step=704982704
[4]exec time: 10.737425 sec, exec:step=704982704
[5]exec time: 10.679522 sec, exec:step=704982704
[6]exec time: 11.877711 sec, exec:step=704982704
[7]exec time: 10.613468 sec, exec:step=704982704
[8]exec time: 10.717554 sec, exec:step=704982704
[9]exec time: 10.764245 sec, exec:step=704982704
average time: 10.974777

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值