zoukankan      html  css  js  c++  java
  • csuoj 1215 稳定排序

    经过一位大牛的指点,放弃了使用分治的念头,看来快排还是很灵活的。

     1 # include <stdio.h>
    2 # include <stdlib.h>
    3
    4 # define MAXN 100005
    5
    6 typedef struct {
    7 int X, Y;
    8 int I;
    9 }data;
    10
    11 data a[MAXN];
    12
    13 int cmp(const void *a, const void *b)
    14 {
    15 if ((*(data*)a).X == (*(data*)b).X)
    16 return (*(data*)a).I-(*(data*)b).I;
    17 return (*(data*)a).X - (*(data*)b).X;
    18 }
    19
    20 int main()
    21 {
    22 int n, i;
    23
    24 while (~scanf("%d", &n))
    25 {
    26 for (i = 0; i < n; ++i)
    27 {
    28 a[i].I = i;
    29 scanf("%d%d", &a[i].X, &a[i].Y);
    30 }
    31 qsort(a, n, sizeof(data), cmp);
    32 for (i = 0; i < n; ++i)
    33 printf("%d %d\n", a[i].X, a[i].Y);
    34 }
    35
    36 return 0;
    37 }

    刚看到一个qsort的提示:return (*(int *)a - *(int *)b);可能会溢出,所以较好的写法是:

    int compare (const void * a, const void * b)
    {
    return ( *(int*)a > *(int*)b ? 1 : -1);
    }



  • 相关阅读:
    Go:获取命令行参数
    Go:文件操作
    Go:类型断言
    GO:interface
    Go:面向"对象"
    Go:工厂模式
    layui中流加载layui.flow
    js显示当前时间
    layui中的分页laypage
    layui中的多图上传
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2428983.html
Copyright © 2011-2022 走看看