C语言:顺序查找和二分查找

任务代码:

顺序查找元素:

#include 

#define SIZE 10
int main()
{
    int a[SIZE]={1,2,3,4,5,6,7,8,9,10};
    int index=-1;//如果末尾没有找到,默认函数为=-1
    int i,number;
    printf("请输入要查找的数据:");
    scanf("%d",&number);

    //顺序查找
    for(i=0;i0)
    {
        printf("找到了这个数%d,位于数组的第%d个!",number,index+1);
    }
    else
    {
        printf("没有找到数字!");
    }
    return 0;
}




二分查找方法:

#include 

#define SIZE 10
int main()
{
    int a[SIZE]={1,2,3,4,5,6,7,8,9,10};
    int index=-1;//如果末尾没有找到,默认函数为=-1
    int i,key;
    printf("请输入要查找的数据:");
    scanf("%d",&key);

    //二分查找
    /*二分查找的前提是你所查找的数字必须已经是会有序数组!!!!*/
    int low,high,mid;
    low=0;//代表数组第一个数
    high=SIZE-1;//代表数组最后一个数
    while(low<=high)//在没有查找到最后一个数的情况下继续执行
    {
        mid=(low+high)/2;//设置mid为数组中间那个数
        if(a[mid]==key)//恰好等于的情况
        {
            index=mid;
            break;
        }
        else
        if(a[mid]>key)
        {
              high=mid-1;//将mid赋值给高的那一边的下一位
        }
        else
        {
            low=mid+1;//将mid 赋值给低的那一边的下一位
        }
    }


    //输出结果
    if(index>0)
    {
        printf("找到了这个数%d,位于数组的第%d个!",key,index+1);
    }
    else
    {
        printf("没有找到数字!");
    }
    return 0;
}



执行情况:

C语言:顺序查找和二分查找_第1张图片
知识总结:

C语言:顺序查找和二分查找_第2张图片


C语言:顺序查找和二分查找_第3张图片


!!!!局限性是,二分查找必须针对有序的,无重复数列!!!!在使用的时候必须先将数列有序化,如果要技术出现次数必须使用其他算法!

心得体会;


你可能感兴趣的:(C语言提高学习)