数据结构-查找

本文详细介绍了数据结构中的查找技术,包括顺序查找、有序表查找(如折半查找、插值查找、斐波那契查找)、线性索引查找(稠密索引、分块索引、倒排索引)、二叉排序树、平衡二叉树(AVL树)以及多路查找树(B树、B+树)。此外,还深入探讨了散列查找和处理哈希冲突的方法,如开放定址法、再散列函数法、链地址法和公共溢出区法。
摘要由CSDN通过智能技术生成

1.查找

查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。
查找表:是由同一类型的数据元素(或记录)构成的集合。
关键字:是数据元素中某个数据项的值,又称为键值。
查找表按照查找方式来分有两种:静态查找表和动态查找表
静态查找表:只做查找操作的查找表。
(1)查询某个特定的数据元素是否在表中
(2)检索某个特定的数据元素和各种属性
动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。
(1)查找时插入元素
(2)查找时删除元素

2.顺序表查找

顺序查找,又称线性查找。过程:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不相等时,则表中没有所差的记录,查找不成功。
时间复杂度O(n)


public class Test_Search {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] array= {0,2,6,5,18,26,8,9,11,42};
	    System.out.println("普通顺序表查找:" +"\t"+sequenceSearch1(array,9));
		System.out.println("设置哨兵顺序表查找" +"\t"+sequenceSearch2(array,9));

	}
	//普通顺序表查找
	public static int sequenceSearch1(int[] array,int key) {
		int i;
		for(i=1;i<=array.length;i++) {
			if(array[i]==key) {
				return i;
			}
		}
		return 0;
	}
	//设置哨兵顺序表查找
	public static int sequenceSearch2(int[] array,int key) {
		int i;
		array[0]=key;
		i=array.length-1;
		while(array[i]!=key) {
			i--;
		}
		return i;
	}
	
}

3.有序表查找

3.1折半查找

折半查找,BinarySearch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值