函数题:找最小元素/选择排序 - C/C++ 数组及字符串
(找最小元素)对于给定的包含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/)

答案:若无答案欢迎评论
以这个函数为基础,可以演化出一种称之为选择排序的算法。该算法从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/)

答案:若无答案欢迎评论