zoukankan      html  css  js  c++  java
  • [GRYZ2015]快排练习

    用快排完成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感觉也是蛮欣慰的了。好像随着时间的推移,学到的东西越来越多,一些以前的东西更好理解。有时不必过分拘泥于现在,向下走,或许回头看看现在不算什么。

  • 相关阅读:
    图论小测
    有关连通性
    差分约束
    php中代码执行&&命令执行函数【转载】
    Boss直聘的一个csrf与url跳转漏洞(已经修复)
    Immunity Canvas初体验加操作指南
    SSRF复习版本
    XXE漏洞复习版本
    信息收集汇总
    web前端逆向初体验
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4931126.html
Copyright © 2011-2022 走看看