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

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

diexun2011

2016.01.16

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:49%    等级:12

已帮助:12974人

没太看懂楼主原来的意思,在原来代码的基础上修改

#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;

}

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值