实验六作业

1 .问题
在有n个整数的数组S中, 选第k小的元素。

2.解析
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
3、设计

int Select( int a[], int s, int e, int k )
{
	int i=s,j=e,tmp;
if(s < e)

{
tmp = a[s];

while(i != j)

{
while(j > i && a[j] >= tmp)

j--;

a[i] = a[j];

while(i < j && a[i] <= tmp)

i++;

a[j] = a[i];

}

a[i] = tmp;

if(k-1 == i)

return a[i];

else if(k-1 < i)

return Select(a, s, i-1, k);

else

return Select(a, i+1, e, k);

}

else if(s == e && s == k-1)

return a[k-1];

}

4、分析
在这里插入图片描述
在这里插入图片描述
5.源码
https://github.com/land555/algorithm-analy-sis/blob/main/week6.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值