C语言找出二维数组中最小的十个数
时间: 2024-09-12 09:11:28 浏览: 58
在C语言中,要找出二维数组中最小的十个数,我们可以使用选择排序算法的思想,通过不断选择剩余元素中的最小值并将其放置在数组的前十个位置来实现。以下是实现这一功能的步骤和一个简单的代码示例:
步骤如下:
1. 假设二维数组的大小为 m x n,并且我们只需要找出最小的十个数,那么我们只需要操作数组的前十个元素即可。
2. 将前十个元素视为一个待排序的序列。
3. 在这个序列中进行选择排序,每次从未排序的部分选出最小元素,与未排序部分的第一个元素交换位置。
4. 经过九次这样的选择和交换,前十个元素即为最小的十个数。
下面是一个简单的代码示例:
```c
#include <stdio.h>
#include <limits.h> // 用于INT_MAX
void findTenMin(int arr[][n], int m, int n) {
int minIndex, temp;
for (int i = 0; i < 10; i++) {
minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[i][j] < arr[i][minIndex]) {
minIndex = j;
}
}
// 交换元素位置
for (int k = 0; k < m; k++) {
temp = arr[k][i];
arr[k][i] = arr[k][minIndex];
arr[k][minIndex] = temp;
}
}
}
int main() {
int m = 5; // 行数
int n = 5; // 列数,假设我们要找最小的十个数,n >= 10
int arr[m][n] = {
{22, 34, 3, 32, 82},
{2, 34, 32, 82, 50},
{45, 7, 8, 66, 55},
{47, 12, 1, 21, 33},
{11, 5, 45, 65, 18}
};
findTenMin(arr, m, n);
printf("The smallest ten numbers are:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i][i]);
}
printf("\n");
return 0;
}
```
需要注意的是,以上代码假设我们只需要找最小的十个数,且这些数位于二维数组的前十个位置。如果最小的十个数分布在整个二维数组中,那么需要对整个数组进行排序,并从中选取前十个最小值。
阅读全文