计算机算法中的用递归法求n的阶乘与选择排序法是什么?请细讲

C语言中冒泡排序法和选择排序法有哪些不同_百度知道
C语言中冒泡排序法和选择排序法有哪些不同
提问者采纳
a[j]=a[min];=9;=9,min:1;i;i++)
for(j=i+1;i&}2;而选择法!注意,比出最值的。不同点;j& printf(&quot,大的泡沉到下面;!
scanf(&quot!,i--)
printf(&quot.都要通过n-1组排出具有n个数的顺序;
for(i=9;9-i,是假定了一个最值;
a[j]=a[j+1];%4d&=9;i&
temp=a[j];9!:1;
a[min]=void main(){ int i.都是通过逐个相比;
a[j-1]=} 通过这两个程序,最值在中间和其他的值交换;
深刻了解;i++) {
min=i,都是效率比较低的方法;j&i&lt,小的气泡往上浮!;;);i++)
scanf(& int a[10]:是a[j-1]还是a[j+1]:&
a[j+1]=i++)
for(j=9; printf(&quot.选择法#include&lt,*
for(i=0,可以发现他们的编程还是有些区别的,a[i]);。;a[j])
min=j;);请输入十个整数:1;%d&i&lt。;j--)
if(a[j]&lt,j;
a[j]=a[j-1]!; for(i=0; int a[10]。其实冒泡法和选择法的区别不大;
}大的气泡往下沉,a[i]);j++)
if(a[min]&=9,所以最值和其他的值的交换就发生在假定最值的地方,但是总结下;;2;j++)
if(a[j]& for(i=0;=0。;请输入十个整数;void main(){ int i:&quot,j,顾名思义就是把小的泡冒到上面;.h&gt,&a[i]);a[j+1])
temp=a[j]先上选择法和冒泡法.冒泡法#include&%4d&quot:相同点;a[j-1])
temp=a[j]; for(i=0.冒泡法。; for(i=0,&a[i]);i&%d&quot.h&gt
提问者评价
程序上能看出 ,但是用语言表述貌似不清楚
其他类似问题
为您推荐:
其他2条回答
#include&stdio.h& //链接标准头文件
#define N 5 //定义常量N并赋值为5
void main() //主函数入口
{ //表示主函数开始
int i,j; //定义整形变量i和j
int grade[N], //定义N维(N=5,也就是五维啦^^)整形数组和整形变量temp
printf(&输入5个数\n&); //在屏幕上显式“输入5个数”并且换行
for(i=0;i&N;i++) //开始for循环,从i=0,每次加1,直到i=4,共需循环5次
{ //循环体开始
scanf(&%d&,&grade[i]); //依次获取用户输入的整数值并存入数组grade中
} //循环结束
for(i=0;i&N;i++) //开始外层for循环,从i=0,每次加1,直到i=4
{ //外层循环体开始
for(j=0;j&N-1-i;j++) //开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1
{ //内层循环体开始
您可能关注的推广
冒泡排序法的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁第六讲 算法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第六讲 算法
上传于||文档简介
&&第​六​讲​ ​算​法
大小:14.65KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢c语言,递归法的选择排序。为什么运行出错。。。求赐教_百度知道
c语言,递归法的选择排序。为什么运行出错。。。求赐教
#include&stdio.h&void exchange(int array[],int pos,int time);//交换数组值 int findMin(int [],int left,int right);//寻找最大值所在的单元下标 void RecurSelectSort(int [],int n);//选择排序法递归 //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&i++)//读入数字
{scanf(&%d&,&array[i]);
printf(&The result is:&);
RecurSelectSort(array,size);//选择排序
for(i=0;i&i++)//打印数组
{printf(&%d &,array[i]);
system(&Pause&);
return 0;}void RecurSelectSort(int array[],int n)//n为已排好的数字个数 {
exchange(array,findMin(array,n-1,size-1),n);
RecurSelectSort(array,n-1);
else if(n==1)
{ exchange(array,findMin(array,0,size-1),0);
}}void exchange(int array[],int pos,int time)//交换数组元素。pos为交换的位置,time为第几次交换(也是交换到time-1这个单元) {
mid=array[time-1];
array[time-1]=array[pos];
array[pos]=}int findMin(int array[],int left,int right)//寻找最小值。left,right分别为查找下界和上界 {
int i,min=array[left],c;
for(i=i&=i++)
{ if(array[i]&min)
{min=array[i];
提问者采纳
没太看懂楼主原来的意思,在原来代码的基础上修改#include&stdio.h&void exchange(int array[],int pos,int time);//交换数组值 int findMin(int [],int left,int right);//寻找最大值所在的单元下标 void RecurSelectSort(int [],int n);//选择排序法递归 //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&i++)//读入数字
scanf(&%d&,&array[i]);
printf(&The result is:&);
RecurSelectSort(array,size);//选择排序
for(i=0;i&i++)//打印数组
printf(&%d &,array[i]);
system(&Pause&);
return 0;}void RecurSelectSort(int array[],int n)//n为已排好的数字个数 {
exchange(array,n-1,findMin(array,0,n-1));
RecurSelectSort(array,n-1);
else if(n==1)
// exchange(array,findMin(array,0,size-1),0);
}}void exchange(int array[],int pos,int time)//交换数组元素。pos为交换的位置,time为第几次交换(也是交换到time-1这个单元) {
mid=ar供激垛刻艹灸讹熏番抹ray[time];
array[time]=array[pos];
array[pos]=}int findMin(int array[],int left,int right)//寻找最小值。left,right分别为查找下界和上界{
int i,min=array[left],c=
for(i=i&=i++)
if(array[i]&min)
min=array[i];
提问者评价
还是有错误,不过,谢谢你啦
来自团队:
其他类似问题
为您推荐:
选择排序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁3664人阅读
算法(11)
1 冒泡排序
1 冒泡排序:
void bubbleSort(int *data,int start,int end)
if (start & end) {
int temp = 0;
int length = end - start + 1;
for (int i = i & length - 1; i ++) {
if (data[i] & data[i + 1]) {
temp = data[i];
data[i] = data[i + 1];
data[i + 1] =
bubbleSort(data,start,end);
注意问题:end--那里,注意每次递归的起始终止下标的移动,起始下标不变,终止下标每次减1,
循环结束条件 为start == end,以及i & length - 1;
2 选择排序
void selectionSort(int *data,int start,int end)
if (start & end)
//int length = end - start + 1;
int temp = data[start];
int index =
for (int i = start + 1; i & end + 1; i ++) {
if (data[index] & data[i]) {
for (int i = 0; i & 10; i ++) {
printf(&%d
&,data[i]);
printf(&\n&);
if (start != index) {
temp = data[start];
data[start] = data[index];
data[index] =
selectionSort(data, start, end);
注意问题:start ++那里,注意每次递归的起始终止下标的移动,起始每次加1,终止下标不变,
循环结束条件 为start == end,以及i & end + 1
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:371246次
积分:5254
积分:5254
排名:第3517名
原创:156篇
转载:49篇
评论:53条
(1)(1)(5)(1)(1)(1)(2)(1)(1)(13)(17)(26)(7)(2)(1)(1)(17)(2)(2)(9)(16)(5)(7)(25)(4)(7)(2)(5)(6)(2)(2)(2)(12)(2)(1)

我要回帖

更多关于 用递归法求n的阶乘 的文章

 

随机推荐