编程操作
编写一个递归函数sort(int array[],int low,int high),实现将数组下标从low到high-1范围内的元素按从小到大的顺序选择排序#include<stdio.h>
int fun(int a[],int low,int high);
int main()
{
int a,i;
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
fun(a,0,10);
for(i=0;i<10;i++)
{
printf("%2d",a);
}
}
int fun(int a[],int low,int high)
{
int i,j,k,t;
for(i=low;i<high;i++)
{
k=i;
for(j=i+1;j<high;j++)
{
if(a>a)
{
k=j;
}
}
if(k!=i)
{
t=a;
a=a;
a=t;
}
}
}
我这段为什么没有成功 你的代码存在几个问题:
1. 在主函数中,输入数组元素时,应该使用&a而不是&a。
2. 在主函数中,您调用了fun()函数,但fun()函数并没有返回任何值,因此您需要将fun()函数的返回值类型改为void。
3. 在fun()函数中,您使用了选择排序算法的实现,但是您的fun()函数没有递归调用自身,所以它不是一个递归函数。根据题目要求,您需要实现一个递归函数。
尝试一下如下代码:#include <stdio.h>
void sort(int a[], int low, int high);
int main() {
int a, i;
for (i = 0; i < 10; i++) {
scanf("%d", &a);
}
sort(a, 0, 10);
for (i = 0; i < 10; i++) {
printf("%2d", a);
}
return 0;
}
void sort(int a[], int low, int high) {
if (low >= high - 1) {
return;
}
int i, j, min_idx, temp;
min_idx = low;
for (i = low + 1; i < high; i++) {
if (a < a) {
min_idx = i;
}
}
temp = a;
a = a;
a = temp;
sort(a, low + 1, high);
}
页:
[1]