C语言程序题,根据二维数组第二个数的大小排序从小到大.
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/22 07:00:07
C语言程序题,根据二维数组第二个数的大小排序从小到大.
比如:有s[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
现在要如题排序了.
结果应该是
1 3
3 4
0 7
3 8
2 9
5 10
6 12
4 14
10 15
8 18
15 19
15 20
并且将这结果仍然保存在s[12][2]中.
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n
比如:有s[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
现在要如题排序了.
结果应该是
1 3
3 4
0 7
3 8
2 9
5 10
6 12
4 14
10 15
8 18
15 19
15 20
并且将这结果仍然保存在s[12][2]中.
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n
![C语言程序题,根据二维数组第二个数的大小排序从小到大.](/uploads/image/z/5350602-66-2.jpg?t=C%E8%AF%AD%E8%A8%80%E7%A8%8B%E5%BA%8F%E9%A2%98%2C%E6%A0%B9%E6%8D%AE%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%95%B0%E7%9A%84%E5%A4%A7%E5%B0%8F%E6%8E%92%E5%BA%8F%E4%BB%8E%E5%B0%8F%E5%88%B0%E5%A4%A7.)
#include <stdio.h>
void sort(int a[][2],int n) {
\x09int i,j,k,t;
\x09for(i = 0; i < n - 1; ++i) {
\x09\x09k = i;
\x09\x09for(j = i + 1; j < n; ++j) {
\x09\x09\x09if(a[k][1] > a[j][1])
\x09\x09\x09\x09k = j;
\x09\x09}
\x09\x09if(k != i) {
\x09\x09\x09for(j = 0; j < 2; ++j) {
\x09\x09\x09\x09t = a[k][j];
\x09\x09\x09\x09a[k][j] = a[i][j];
\x09\x09\x09\x09a[i][j] = t;
\x09\x09\x09}
\x09\x09}
\x09}
}
int main() {
\x09int 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};
\x09int i,j;
\x09printf("排序前:\n");
\x09for(i = 0; i < 12; ++i) {
\x09\x09for(j = 0; j < 2; ++j)
\x09\x09\x09printf("%4d",a[i][j]);
\x09\x09printf("\n");
\x09}
\x09sort(a,12);
\x09printf("排序后:\n");
\x09for(i = 0; i < 12; ++i) {
\x09\x09for(j = 0; j < 2; ++j)
\x09\x09\x09printf("%4d",a[i][j]);
\x09\x09printf("\n");
\x09}
\x09return 0;
}
再问: 还有没有更简单省事的方法?,因为像这样的话需要1秒多,计算量大。。。会超时。。
再答: 显示部分可以省去,这样会节省更多的时间。当然,若将排序函数融合在main()中,也会节省函数调用时间。#include <stdio.h>
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) {
\x09int i,j,k,t;
\x09for(i = 0; i < n - 1; ++i) {
\x09\x09k = i;
\x09\x09for(j = i + 1; j < n; ++j) {
\x09\x09\x09if(a[k][1] > a[j][1])
\x09\x09\x09\x09k = j;
\x09\x09}
\x09\x09if(k != i) {
\x09\x09\x09for(j = 0; j < 2; ++j) {
\x09\x09\x09\x09t = a[k][j];
\x09\x09\x09\x09a[k][j] = a[i][j];
\x09\x09\x09\x09a[i][j] = t;
\x09\x09\x09}
\x09\x09}
\x09}
}
int main() {
\x09int 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};
\x09int i,j;
\x09printf("排序前:\n");
\x09for(i = 0; i < 12; ++i) {
\x09\x09for(j = 0; j < 2; ++j)
\x09\x09\x09printf("%4d",a[i][j]);
\x09\x09printf("\n");
\x09}
\x09sort(a,12);
\x09printf("排序后:\n");
\x09for(i = 0; i < 12; ++i) {
\x09\x09for(j = 0; j < 2; ++j)
\x09\x09\x09printf("%4d",a[i][j]);
\x09\x09printf("\n");
\x09}
\x09return 0;
}
再问: 还有没有更简单省事的方法?,因为像这样的话需要1秒多,计算量大。。。会超时。。
再答: 显示部分可以省去,这样会节省更多的时间。当然,若将排序函数融合在main()中,也会节省函数调用时间。#include <stdio.h>
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;
}
再问: 还是直接问你题吧。。。。
C语言程序题,根据二维数组第二个数的大小排序从小到大.
c语言二维数组排序给定一个10*10的矩阵a,编一程序实现a[i1][j1]
C语言二维数组指针程序理解,看不懂这个程序,
二维数组中的数据如何用C语言进行排序,它们代码是咋样的?
从键盘上输入10个数,C语言程序:用起泡法对这10个数排从小到大的顺序排序后输出.
c语言的一个二维数组的题,
请教C语言一道指向二维数组指针的题,
c语言二维数组的问题,
C语言二维数组名的问题
C语言二维数组的一点疑问!
C语言的一个简单程序:输入100个任意数字,按从小到大排序.
C语言:编写一程序实现比较任意个字符串的大小.实现比较排序时定义函数完成,函数参数可选指针数组.