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),这里就不多做介绍。

    谢谢浏览。

  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/ageng/p/13026755.html
Copyright © 2011-2022 走看看