C 二维数组排序

来源:互联网 发布:淘宝刷单是什么意思 编辑:程序博客网 时间:2024/04/29 19:01

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

分析:通过一个参数是二维数组的搜索函数,寻找每次从第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
请按任意键继续. . .

0 0
原创粉丝点击