没太看懂楼主原来的意思,在原来代码的基础上修改
#includevoid 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; }