zoukankan      html  css  js  c++  java
  • 数据结构实验

    查找

    · 今天老师带着我们学习了"查找"这一章,查找分为基于线性表的查找法和基于树的查找法,但还只是讲了基于线性表的查找法,那么基于线性表的查找法还分为顺序查找法、折半查找法、分块查找法。

    · 首先是顺序查找法,它的特点是用所给关键字与线性表中各元素的关键字逐个比较,直到成功或者失败,存储结构通常为顺序结构,也可以为链式结构。

    · 顺序查找法的定义是:#define LIST_SIZE 20 typedf struct{KeyType key;OtherType other_data;}RecordType; typedef struct{RecordType r[LIST_SIZE+1]; int lenth;}RecordList;

    · 这也是非常常规的顺序查找法的定义,但是今天所讲的重点是和"监视哨"有关,有了监视哨就可以大大提升查找的效率,还可以起到防止越界的作用。

    · 折半查找法的核心思想还是非常好理解的,定义好low=1和high=l.lenth之后,mid=low+high / 2 ,首先判断mid是不是就是要找的那个数据,若相等,则直接返回值,若不是,则判断所求数据是比mid大还是比mid小,若比mid小,则high=mid-1,若比mid大,则low=mid+1,直接顺序查找法的O(n)提升为折半查找法的O(logn),若n足够大,性能也能得到质的飞越。

    · 分块查找法的性能也是挺不错的,夹在顺序查找法与折半查找法之间,时间复杂度是O(nlogn),这里就不多做介绍。

    谢谢浏览。

  • 相关阅读:
    7.JavaScript-Promise的并行和串行
    6.Javascript如何处理循环的异步操作
    5.Javascript闭包得实现原理和作用
    4.Javascript中实现继承的几种方法及其优缺点
    3.Javascript实现instanceof
    BEF
    ant-vue Table组件selectedRows翻页后不保留上一页已选
    js 构造函数、继承
    Vue全局注册组件
    react迷惑的点(一)
  • 原文地址:https://www.cnblogs.com/ageng/p/13026755.html
Copyright © 2011-2022 走看看