首页 > 其他 > 详细

[GRYZ2015]快排练习

时间:2015-11-02 21:01:27      阅读:210      评论:0      收藏:0      [点我收藏+]

用快排完成n(n<=100)个人年龄的从小到大的排序,要求出生年相同的按月排。

 输入:第一行n个人

         2到n+1行出生  年  月(1992 9)

 输出:年龄的从小到大的排序。

type ss=record
    nian,yue:longint;
    end;

var a:array[1..10000]of ss;
    n,i:longint;

procedure sort(l,r:longint);
var i,j,xn,xy:longint;y:ss;
begin
    i:=l;j:=r;
    xn:=a[(l+r) div 2].nian;
    xy:=a[(l+r) div 2].yue;
    repeat
        while (a[i].nian<xn)or((a[i].nian=xn)and(a[i].yue<xy))do inc(i);
        while (a[j].nian>xn)or((a[j].nian=xn)and(a[j].yue>xy))do dec(j);
        if i<=j then
            begin
                y:=a[i];
                a[i]:=a[j];
                a[j]:=y;
                inc(i);
                dec(j);
            end;
    until i>j;
    if i<r then sort(i,r);
    if j>l then sort(l,j);
end;

begin
    assign(input,birth.in);
    reset(input);
    assign(output,birth.out);
    rewrite(output);
    readln(n);
    for i:=1 to n do
        readln(a[i].nian,a[i].yue);
    sort(1,n);
    for i:=1 to n do
        writeln(a[i].nian, ,a[i].yue);
    close(input);
    close(output);
end.

没什么别的,只是想说当时快排的时候很不理解,都不会写,写程序就用PASCAL自带的排序,如今晚上小测验修改后的快排可以一遍AC感觉也是蛮欣慰的了。好像随着时间的推移,学到的东西越来越多,一些以前的东西更好理解。有时不必过分拘泥于现在,向下走,或许回头看看现在不算什么。

[GRYZ2015]快排练习

原文:http://www.cnblogs.com/yangqingli/p/4931126.html

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