码迷,mamicode.com
首页 > 其他好文 > 详细

😍查找😍

时间:2020-07-11 17:36:23      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:return   typedef   struct   失败   之间   com   ble   循环   mic   

顺序查找

顺 序 查 找 法 的 特 点 : 用 所 给 关 键 字 与 线 性 表 中 各 元 素 的 关 键 字‘ 逐 个 比 较 ‘, 直 到 成 功 或 失 败 。 存 储
结 构 通 常 为 顺 序 结 构 , 也 可 为 链 式 结 构 。
typedef struct {
    ElemType *elem;
    int Len;    //表长
}Stable;

int Search(Stable St,ElemType key){
    St.elem[0] = key;   //哨兵
    //从后往前找
    for(i=St.Len; St.elem[i]!=key; --i)

    //若表中不存在关键字,则将查找到i=0时退出for循环
    return i;
}

折半查找

折半查找的思想:将表中间位置记录的关键字与查找 关 键 字 比 较 , 如 果 两 者 相 等 , 则 查 找 成 功 ; 否
则 利 用 中 间 位 置 记 录 将 表 分 成 前 、 后 两 个 子 表 , 如 果 中 间 位 置 记 录 的 关 键 字 大 于 查 找 关 键 字 , 则 进 一
步 查 找 前 一 子 表 , 否 则 进 一 步 查 找 后 一 子 表 。 重 复 以 上 过 程 , 直 到 找 到 满 足 条 件 的 记 录 , 使 查 找 成 功 ,
或 直 到 子 表 不 存 在 为 止 , 此 时 查 找 不 成 功 。
int BinarySer(SqList L,ElemType key){
    int low=0,hight=L.Len-1,mid;
    whlie(low <= hight){
        mid = (low+hight)/2;        //中间位置
        if(L.elem[mid] == key){
            return mid;
        }else if(L.elem[mid] > key){    //前半部分找
            hight = mid-1;
        }else{          //后半部分找
            low = mid-1;
        }
    }
    return -1;      //查找失败
}

技术图片
查找成功与失败
技术图片

技术图片

索引查找(分块查找)

基本思想:将查找表分为若干子块,块内的元素可以‘无序‘,块之间是‘有序‘的
8, 14, 6, 9, 10, 22, 34, 18, 19, 31,40, 38, 54, 66, 46, 71, 78, 68, 80, 85, 100, 94, 88, 96, 87
将25个记录分为5块,每块中有5个记录

技术图片

😍查找😍

标签:return   typedef   struct   失败   之间   com   ble   循环   mic   

原文地址:https://www.cnblogs.com/xiaofff/p/13284043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!