折半查找法

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define N 15

int search();//函数声明

void main()

{ 

    int a[N],i,j,swp,num,mid;

    srand((unsigned int)time NULL);  //以时间作为种子

    for(i=0;i<N;i++)   

    a[i]=rand()%100+1;          //生成随机数组

    for(i=0;i<N;i++)   

    printf("%5d",a[i]);        //打印出生成的随机数组

    printf("\n");

    for(i=0;i<N-1;i++)              //用冒泡排序法给生成的随机数排序   

    for(j=0;j<N-i-1;j++)

        {         

            if(a[j]>a[j+1])

          {              swp=a[j];

              a[j]=a[j+1];

              a[j+1]=swp;

            }   

} 

printf("After sorting:\n");    //输出排序后的结果 

for(i=0;i<N;i++)        printf("%5d",a[i]); 

puts("\nplease input the number that you want to search:");    scanf("%d",&num); 

mid=search(num,a);      //调用函数}int search(int num,int a[])    //折半查找法{ 

int low=0,hight=N,mid,jugment=0; 

do 

{     

mid=(low+hight)/2;     

if(num<a[mid])         

hight=mid;     

if(num>a[mid])         

low=mid;     

if(num==a[mid])     

{         

printf("%d in the array is a[%d]",num,mid);         

jugment=1;         

break;     

} 

}while(hight-low!=1); 

if(jugment==0)     

printf("no this number!"); 

return mid;

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值