• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言查找算法之顺序查找、二分查找(折半查找)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  C语言查找算法之顺序查找、二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些。

  1. 顺序查找
    /*顺序查找 
    顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的数的具体位置。
    原理是让关键字与队列中的数从最后一个开始(或第一个)逐个比较,直到找出与给定关键字相同的数为止
    它的缺点是效率低下
    */ #include<stdio.h> void main(){ int i ,num,arr[10]={3,6,9,10,65,23,76,45,2,11}; int size = sizeof(arr)/sizeof(int); printf("请输入要查询的值:"); scanf("%d",&num); for(i=0;i<size;i++){ if(num==arr[i]){ break; } } if(i!=size) printf("要查询的值%d在第%d个位置",num,i+1); else printf("未找到值%d",num); getch(); }

     

  2. 二分查找
    /*二分查找 
    二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。
    但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
    */
    #include<stdio.h>
    void main(){
        int mid,low,high,num,arr[10]={3,6,9,10,23,65,76,87,88,213};
        int size = sizeof(arr)/sizeof(int);
        printf("请输入要查询的值:"); 
        scanf("%d",&num);
        low = 0;
        high = size;//初始low和high的值
        while(low<=high){
            mid = (low+high)/2;//取中值 
            if(arr[mid]==num) break;//找到,结束循环此时low<=high 
            else if(arr[mid] < num) low = mid+1;//如果目标值比当前中间值大,说明目标值在中间值的后面low移动到mid+1 
            else high = mid - 1;
        }
        if(low <= high)//找到,输出 
            printf("要查询的值%d在第%d个位置",num,mid+1);
        else //未找到 
            printf("未找到值%d",num);
        
        getch();
    } 

     


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#Json转对象发布时间:2022-07-14
下一篇:
C++学习笔记-类定义的注意事项和C#的区别发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap