-->
当前位置:首页 > 题库

函数题:找最小元素/选择排序 - C/C++ 数组及字符串

Luz4年前 (2022-09-06)题库599
(找最小元素)对于给定的包含10个元素的整数数组,设计一个函数,从数组给定的下标范围[i,j]里找到值最小的元素,返回其下标。该函数的原型可以是int findMin(int a[], int i, int j),参数int a[]代表被搜索的数组。

以这个函数为基础,可以演化出一种称之为选择排序的算法。该算法从a[0..N]中找出最小元素并与a[0]交换,然后再从a[1..N]中找出最小元素并与a[1]交换,然后再从a[2..n]中找出最小元素并与a[2]交换,... 最终得到一个递增有序的数组。

下述程序从键盘读入10个整数,然后使用选择排序算法进行排序并输出。请设计findMin()函数,使得该程序可以正确运行。


### 函数接口定义:
c++
int findMin(int a[], int i, int j);


### 裁判测试程序样例:
c++
#include <stdio.h>
//findMin()函数定义于此处
int main()
{
const int N = 10;
int a[10] = {0};
for (int i=0;i<N;i++)
scanf("%d", &a[i]);

for (int k=0;k<N-1;k++) {
int idx = findMin(a,k,N-1);
float t = a[k];
a[k] = a[idx];
a[idx] = t;
}

for (int i=0;i<N;i++) {
if (i==N-1)
printf("%d",a[i]);
else
printf("%d,",a[i]);
}

return 0;
}


### 输入样例:
in
78 1 7 2 24 35 77 89 10 567


### 输出样例:
out
1,2,7,10,24,35,77,78,89,567


注意:本题只需要提交findMin()函数的定义代码,不要将整个程序提交。

### 感觉不会?  那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)







答案:若无答案欢迎评论