您的位置:首页 > 其它

二分法递归查找与二分法查找,随机数产生,冒泡排序

2015-08-14 19:32 295 查看
/***********************************************
* 作者			:skywalker_prime
* 联系方式 	:shanquan54@163.com
* 最后修改时间	:2015-08-14 19:29
* 文件名称 	:9.c
* 程序描述		:
* csdn地址		:blog.csdn.net/skywalker_prime
***********************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
void bubble(int a[],int n);//冒泡排序
void printfs(int a[]);//打印数组
int  search(int a[],int low,int high,int k);//while查找
int search1(int a[],int low,int high,int k);//递归查找
int main()
{
int i=0,a[10];
int num;
int flag=0;
srand(time(NULL));
for(i=0;i<10;i++)
{
a[i]=(rand()%20+1);
}
printfs(a);
bubble(a,10);
printfs(a);
printf("please input the num:");
scanf("%d",&num);
flag=search1(a,0,9,num);
//	flag=search(a,0,9,num);
if(flag==1)
{
printf("找到咯!\n");
return 0;
}
else
{
printf("没有找到!\n");
}
return 0;
}
void bubble(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}

void printfs(int a[])
{
int i=0;
printf("\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}

#if 0
int search(int a[],int low,int high,int k)
{
printf("\nstart:");
int mid;
low=low;
high=high;
while(low<=high)
{
mid=((low+high)/2);
if(k>a[mid])
{
low=mid+1;
}
else if(k<a[mid])
{
high=mid-1;
}
else
return 1;
}
return 0;
}
#endif

int search1(int a[],int low,int high,int k)
{
int mid=(low+high)/2;
if(low<=high)
{
if(a[mid]==k)
{
return 1;
}

else if(k>a[mid])
{
return search1(a,mid+1,high,k);
}
else
{
return search1(a,low,mid-1,k);
}
}
else
{
return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: