中易网

C语言程序题,根据二维数组第二个数的大小排序从小到大。

答案:1  悬赏:80  
解决时间 2021-01-20 12:54
C语言程序题,根据二维数组第二个数的大小排序从小到大。
最佳答案
#include 

void sort(int a[][2],int n) {
int i,j,k,t;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j) {
if(a[k][1] > a[j][1])
k = j;
}
if(k != i) {
for(j = 0; j < 2; ++j) {
t = a[k][j];
a[k][j] = a[i][j];
a[i][j] = t;
}
}
}
}

int main() {
int a[12][2] = {1,3,3,4,0,7,3,8,15,19,15,20,10,15,8,18,6,12,5,10,4,14,2,9};
int i,j;
printf("排序前:
");
for(i = 0; i < 12; ++i) {
for(j = 0; j < 2; ++j)
printf("%4d",a[i][j]);
printf("
");
}
sort(a,12);
printf("排序后:
");
for(i = 0; i < 12; ++i) {
for(j = 0; j < 2; ++j)
printf("%4d",a[i][j]);
printf("
");
}
return 0;
}
追问:还有没有更简单省事的方法?,因为像这样的话需要1秒多,计算量大。。。会超时。。
追答:显示部分可以省去,这样会节省更多的时间。
当然,若将排序函数融合在main()中,也会节省函数调用时间。
#include 
 
int main() {
    int a[12][2] = {1,3,3,4,0,7,3,8,15,19,15,20,10,15,8,18,6,12,5,10,4,14,2,9};
    int i,j,k,t,n = 12;
    for(i = 0; i < n - 1; ++i) {
        k = i;
        for(j = i + 1; j < n; ++j) {
            if(a[k][1] > a[j][1])
                k = j;
        }
        if(k != i) {
            for(j = 0; j < 2; ++j) {
                t = a[k][j];
                a[k][j] = a[i][j];
                a[i][j] = t;
            }
        }
    }
    return 0;
}
追问:还是直接问你题吧。。。。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
非小米手机如何同步短信到小米云服务里?
通江维尔康酒店地址有知道的么?有点事想过去
我的手机是vivoy67是32g内存的扩展到64g大概
徽久五享购和徽久网公众号啥区别,应该应该关
交流转直流后的电流和电压变化。
有林志和释小龙的那部电影叫什么
谁有适合朗读的诗歌在3分钟以内的 跪求帮忙
新华眼镜视光中心地址在什么地方,想过去办事
有首歌叫什么什么天空
军校合训分流专业为什么分数要低?
国共三年内战期间,双方的兵力,武器对比如何
在生产聚酯厂上班对人体有害吗?
车子被撞之后应该去四s店维修还是到维修店维
酷划真的可以换QQ币么?
dnf正义的铁锤是什么意思
推荐资讯
win7电脑上先安装了winCC v7.3之后又依次安装
离婚39岁的女子,能找到好的归宿吗?
入境中国时有什么哪些东西是违禁物品?
扑克牌切香蕉作文500字
求韩语翻译,比赛赢了,表示热烈祝贺,你们太
惠普快信上征信吗
澳洲租车,国内的C1驾照,可以在澳洲租8人座的
三次胎停两次空囊,有谁知道这到底是怎么回事
吸引力地址在什么地方,想过去办事
公司名称变更后商标申请的问题!
贴双眼皮贴会使双眼皮加深么?
关于电子表格整列移动的困惑
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?