首页 > 其他 > 详细

六、离散化

时间:2015-07-14 17:59:24      阅读:221      评论:0      收藏:0      [点我收藏+]

将大数转化为小数,例如:

       a:12351235      2151321       51514563        5132316

<=>b:         3                  1                   4                     2

type
  node=record
    id,c:longint;
  end;
var
  a:array [1..10000] of node;
  b:array [1..10000] of longint;
  i,j,m,n:longint;


procedure cha(l,r:longint);
var
  i,j,mid:longint;
  t:node;
begin
  i:=l;
  j:=r;
  mid:=a[(l+r) div 2].c;
  while i<=j do
  begin
    while a[i].c<mid do inc(i);
    while a[j].c>mid do dec(j);
    if (i<=j) then
    begin
      t:=a[i];
      a[i]:=a[j];
      a[j]:=t;
      inc(i);
      dec(j);
    end;
  end;
  if j>l then cha(l,j);
  if i<r then cha(i,r);
end;


begin
  readln(n);
  for i:=1 to n do
  begin
    read(a[i].c);
    a[i].id:=i;
  end;
  cha(1,n);
  for i:=1 to n do
  b[a[i].id]:=i;
  for i:=1 to n do
  writeln(b[i]);
end.

版权声明:本文为博主原创文章,未经博主允许不得转载。

六、离散化

原文:http://blog.csdn.net/boyxiejunboy/article/details/46880289

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!