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

来源:互联网 发布:php网站源码带数据库 编辑:程序博客网 时间:2024/06/11 17:52

任务代码:

顺序查找元素:

#include <stdio.h>#define SIZE 10int 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;i<SIZE;i++)    {        if(a[i]==number)        {            index=i;            break;        }    }        //输出结果    if(index>0)    {        printf("找到了这个数%d,位于数组的第%d个!",number,index+1);    }    else    {        printf("没有找到数字!");    }    return 0;}




二分查找方法:

#include <stdio.h>#define SIZE 10int 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;}



执行情况:


知识总结:





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

心得体会;


原创粉丝点击