1. 顺序查找
数据结构:有序或无序队列,依次对比每个元素
时间复杂度:O(n)
2. 二分查找(折半查找)
数据结构:有序数组,从中间元素开始查找,等于待查找元素则查找结束;>待查找元素,则从中间元素的左边一半继续二分查找;<待查找元素,则从中间元素的右边一半继续二分查找;直到找到或者数组为空。
时间复杂度:O(lgn)
3. 分块查找(索引顺序查找)
“块间有序”(第一块任一元素小于第二块任一元素,依次类推。。。),“块内无序”,选取各块最大元素值构成一个索引表
查找流程:
对索引表二分查找/顺序查找,确定待查找元素位于哪一块,再在此块中顺序查找
时间复杂度:O(lg2n)
4. 二叉排序树(左<根<右) 查找
空树则搜索失败;
待查找元素=根节点数据域的值,查找成功
待查找元素<根节点数据域的值,搜索左子数
待查找元素>根节点数据域的值,搜索右子数
数据结构:二叉排序树
时间复杂度:O(lg2n)
5. 哈希散列法
根据key值和哈希函数创建一个哈希表(散列表),根据key值和哈希函数定位数据元素位置,但取决于冲突
数据结构:哈希表
时间复杂度:几乎是O(1) ,冲突另算