Image Modal

合肥
合肥奥数网

合肥站
奥数网

信息学竞赛常用算法与策略:查找(5)

合肥奥数网整理 2013-01-17 15:39:45

  5.5 查找第k小元素

  查找第k小元素即在n个元素中(未排序)找到第k小的元素。方法同快速排序,采用递归方式。

  程序如下:

  program kspv;

  const n=7;

  type

  arr=array[1..n] of integer;

  var

  b:arr;

  i,k:integer;

  function p(s,t:integer):integer;

  var i,j,t1,x:integer;

  begin

  i:=s;j:=t;x:=b[i];

  repeat

  while (b[j]>=x) and (j>i) do j:=j-1;

  if j>i then begin t1:=b[i]; b[i]:=b[j];b[j]:=t1;end;

  while (b[i]<=x) and (i<j) do i:=i+1;

  if i<j then begin t1:=b[j];b[j]:=b[i];b[i]:=t1; end

  until i=j;

  b[i]:=x;

  p:=i;

  end;

  function find(s,t,k:integer):integer;

  var p1,q:integer;

  begin

  if s=t then find:=b[s] else

  begin

  p1:=p(s,t);

  q:=p1-s+1;

  if k<=q then find:=find(s,p1,k) else find:=find(p1+1,t,k-q);

  end;

  end;

  begin

  write('input data:');

  for i:=1 to n do read(b[i]);readln;

  write('input k:');read(k);

  write('output data:');

  writeln('kthsmall:=',find(1,n,k));

  end.

  关于合肥市青少年信息学竞赛更多的信息,请关注合肥奥数网“青少年信息学竞赛”频道。进入苏州奥数网首页  

  相关阅读

  信息学竞赛常用算法与策略:排序

  信息学竞赛常用算法与策略:回溯

  信息学竞赛常用算法与策略:递归

  信息学竞赛常用算法与策略:算法的概念

  更多精彩内容推荐>>

首页 上一页 下一页 尾页

相关推荐

点击查看更多
重点初中
首页 导航