C 二维数组排序

题目:将二维数组中的每一行进行排序,第一行是整个数组中最小值所在行,第二行是整个数组除第一行的最小值所在行,依次类推。

分析:通过一个参数是二维数组的搜索函数,寻找每次从第n行开始数组中的最小值,并且返回最小值所在行

程序如下:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int search(int  arr[][5], int n);//查找数组中最小值的函数
int main()
{
int arr[5][5];
int i,j,n;
int temp;
//用随机值初始化
srand(time(NULL));
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5;j++)
{
arr[i][j] = rand() % 100;
printf("%2d ",arr[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < 4; i++)
{
//查找第i行开始数组中最小值,最小值所在行与第i行交换
n=search(arr, i);
for (j = 0; j < 5; j++)
{
temp = arr[i][j];
arr[i][j] = arr[n][j];
arr[n][j] = temp;
}
}
//输出排序后的数组
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
printf("%2d ", arr[i][j]);
printf("\n");
}
}
int search(int  arr[][5], int n)
{
int min,m;
int i,j;
min = arr[n][0];
m = n;
//从第n行开始查找最小值,返回最小值所在行数
for (i = n; i < 5; i++)
{
for (j = 0; j < 5;j++)
if (min>arr[i][j])
{
min = arr[i][j];
m = i;
}
}
return m;

}

示例结果:

 1 31  7 83 86
78 44 26 20 74
49 45 54 69 33
94 94 24  6 77
43 13 61 33 39


 1 31  7 83 86
94 94 24  6 77
43 13 61 33 39
78 44 26 20 74
49 45 54 69 33
请按任意键继续. . .

发布了206 篇原创文章 · 获赞 19 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览