c语言,递归法的选择排序。为什么运行出错。。。求赐教

2025-05-10 23:14:24
推荐回答(1个)
回答1:

没太看懂楼主原来的意思,在原来代码的基础上修改
#include
void exchange(int array[],int pos,int time);//交换数组值
int findMin(int [],int left,int right);//寻找最大值所在的单元下标
void RecurSelectSort(int [],int n);//选择排序法递归
int size;//size为数字个数
main()
{
int i,array[1000];//i为计数器
printf("Please input the number of integers:");
scanf("%d",&size);
printf("please input the integers:");
for(i=0;i {
scanf("%d",&array[i]);
}
printf("The result is:");
RecurSelectSort(array,size);//选择排序
for(i=0;i {
printf("%d ",array[i]);
}
system("Pause");
return 0;
}
void RecurSelectSort(int array[],int n)//n为已排好的数字个数
{
if(n!=1)
{
exchange(array,n-1,findMin(array,0,n-1));
RecurSelectSort(array,n-1);
}
else if(n==1)
{
return;
// exchange(array,findMin(array,0,size-1),0);
}
}
void exchange(int array[],int pos,int time)//交换数组元素。pos为交换的位置,time为第几次交换(也是交换到time-1这个单元)
{
int mid;
mid=array[time];
array[time]=array[pos];
array[pos]=mid;
}
int findMin(int array[],int left,int right)//寻找最小值。left,right分别为查找下界和上界
{
int i,min=array[left],c=left;
for(i=left;i<=right;i++)
{
if(array[i] {
min=array[i];
c=i;
}
}
return c;
}