求C语言折半查找法 代码
拿15个静态常量做的测试
#include//要先写 第一个元素的值为0的排除子函数,没写。 int arrange(int x,int a[],int low,int high) { int flag=0; int mid =(low+high)/2; if((high-low)==0 || (high - low) == 1) //二分法排序的最后两种可能 { if(a[mid]==x) return x; else return 0; } int left; int right; left=arrange(x,a,low,mid); //向左 right=arrange(x,a,mid,high); //向右 if(left||right) //整合,有一个非0就是找到值了 return a[left+right]; else return 0; } int main() { int a[]={-8,-5,-2,-1,2,5,8,10,18,21,23,7,9,1,13}; int result,x; printf( {12,14,15,16,2,5,8,10,18,21,23,7,9,1,13} \n); printf(input the number you want:); scanf(%d,&x); result=arrange(x,a,1,15); if( result != 0) printf(%d\n,result); else printf(there is no number!\n); return 0; }
汉诺塔C++代码
#include<stdio.h>
void solve(int num,int z1,int z2,int z3);
void main()
{
int n;
printf(请输入盘子数量:);
scanf(%d,&n);
solve(n,1,2,3);
}
void solve(int num,int z1,int z2,int z3)
{
if(num>0){
solve(num-1,z1,z3,z2);
printf(把%d上的盘子移到%d上\n,z1,z2);
solve(num-1,z3,z2,z1);
}
}
- 相关评论
- 我要评论
-