poj2388

本文介绍如何利用快速排序算法找到一组奇数个数的中位数,通过详细解释算法步骤和代码实现,深入浅出地揭示了排序算法在实际问题解决中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题意】

给定n(n为奇数)个数,输出其中位数

【输入】

第一行为n

接下来n行分别为一个数

【输出】

这n个数的中位数


快排,输出中位数


program poj2388;
var
  n,i,j,k:longint;
  p:array [0..1000001] of longint;

procedure swap (var a,b:longint);
var
  i:longint;
begin
  i:=a;
  a:=b;
  b:=i;
end;

procedure qsort(s,e:longint);
var
  i,j,k:longint;
begin
  if s>=e then exit;
  i:=s;
  j:=e;
  k:=p[(s+e) div 2];
  while i<=j do
    begin
      while p[i]<k do inc(i);
      while p[j]>k do dec(j);
      if i>j then break;
      swap(p[i],p[j]);
      inc(i);
      dec(j);
    end;
  qsort(s,j);
  qsort(i,e);
end;

begin
  read(n);
  for i:=1 to n do
    read(p[i]);
  qsort(1,n);
  writeln(p[n-n div 2])
end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值