C语言程序题,根据二维数组第二个数的大小排序从小到大。
答案:1 悬赏:80
解决时间 2021-01-20 12:54
- 提问者网友:我一贱你就笑
- 2021-01-19 19:33
C语言程序题,根据二维数组第二个数的大小排序从小到大。
最佳答案
- 二级知识专家网友:玩世
- 2021-01-19 21:12
#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;
}
追问:还是直接问你题吧。。。。
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;
}
追问:还是直接问你题吧。。。。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯