选择排序时间复杂度计算浅析

选择排序时间复杂度计算浅析:
代码:

void select_sort(int a[], int n) {
for (i = 0; i < n - 1; ++i) {
j = i;
for (k = i + 1; k < n; ++k) {
if (a[k] < a[j]) j = k;
if (j != i) a[j] <--> a[i];
}
}
} // select_sort

上述程序的原操作有赋值、比较及交换,显然基本操作应该取比较。总的比较次数显然是:(n-1)+(n-2)+(n-3)+...+1这是一个等差数列之和,要算出求和公式的话可以这样:

(n-1)+(n-2)+(n-3)+......+3+2+1=Sn
1+2+3+......+(n-3)+(n-2)+(n-1)=Sn

上边两个式子加起来2Sn=n+n+n+......+n+n+n(一共n-1个n)所以得出Sn=n(n-1)/2,
Sn=n^2-n/2和n^2成正比,因此选择排序的时间复杂度为O(n^2)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值