快速排序查询第k大元素C语言,pascal 快速排序找第K大的数

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

vfbhg67g

2013.09.11

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:58%    等级:12

已帮助:4804人

在n个不同元素中找出第K个最大元素。

program search_k;

var i,j,k:integer;

a:array[1..100] of integer;

procedure search(b,e:integer);

var i,m,t:integer;

begin

if b=e then begin j:=b;exit end;

i:=b;j:=e;m:=a[k];

repeat

while a[i]>m do inc(i);

while m>a[j] do dec(j);

if i

until i>=j;

if i=k then exit;

if i>k then search(b,j) else search(j+1,E);

end;

procedure print(n:integer);

var i:integer;

begin

for i:=1 to n do write(a[i],' ');

writeln;

writeln('a[',k,']=',a[k]);

end;

begin

write('n='); readln(n);

write('a[1..',n,']=');

for k:=1 to n do read(a[k]);

readln;

write('k=');readln(k);

search(1,n);

print(n);

end.

01分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值