| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1249 人关注过本帖
标题:坐标排序问题
只看楼主 加入收藏
ClearningC
Rank: 2
等 级:论坛游民
帖 子:98
专家分:43
注 册:2016-10-26
结帖率:89.47%
收藏
 问题点数:0 回复次数:1 
坐标排序问题
Description
题目输入包含一组二维坐标,要求对坐标按照 x 从小到大排序,如果两个点的 x 坐标相同,那么就按照点的 y 坐标从小到大排序。比如给定三个点(3,2),(1,2),(1,1)那么排序后的顺序应为(1,1),(1,2),(3,2)。坐标的数值均为整数。要求处理的点的数量不超过100个。
只需提交 point_sort函数
Input
首先会输入一个正整数m,表示需要排序的点的数量。
之后是m行,每行包括两个整数,分别表示点的x坐标和y坐标
Output
输出排序后点的坐标。
每行包括两个用空格分隔的整数,分别是点的x坐标和点的y坐标
Sample Input
5
4 5
4 4
3 4
3 3
1 2
Sample Output
1 2
3 3
3 4
4 4
4 5
搜索更多相关主题的帖子: 正整数 
2016-12-18 22:27
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
其实还可以用结构体数组来做,还是先写个常规一点的看看~

程序代码:
#include<stdio.h>
int main()
{
    int n,i,j,t;
    int a[100]={0};
    int b[100]={0};

    scanf("%d",&n);

    for (i=0;i<n;i++)
        scanf("%d%d",&a[i],&b[i]);

    for (i=0;i<n;i++)
        for (j=0;j<n-i-1;j++)
            if (a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            }
            else if (a[j]==a[j+1]&&b[j]>b[j+1])//a[j]相等时,只需交换b即可~
            {
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            }

    printf("\n");

    for (i=0;i<n;i++)
        printf("%d  %d\n",a[i],b[i]);

    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 22:43
快速回复:坐标排序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049839 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved