哈希表-线性探测

哈希表是一种提供快速插入和查找操作的数据结构,具有接近常量时间复杂度的性能。线性探测是哈希表中解决冲突的一种方法,当哈希位置已被占用时,会连续检查下一个位置,直到找到空位。这种方法在数组已满时可能导致性能下降,但适合预估数据量并不要求有序遍历的场景。
摘要由CSDN通过智能技术生成

哈希表是一种数据结构,它可以提供快速的插入和查找操作。不论哈希表有多少数据,插入和删除(有时包括删除)只需要接近常量的时间,即O(1)的时间级。
哈希表运算非常快,在计算机程序中,如果需要在一秒钟内查找上千条记录,通常使用哈希表,哈希表的速度明显是树快。
哈希表也有一些缺点:它是基于数组的,数组创建后难于扩展。某些哈希表基本被填满时,性能下降非常严重,所以程序员必须要清楚表中将要存储多少数据。并且,也没有一种简便的方法可以以任何一种顺序遍历表中的数据项,如果需要这种能力,就只能选择其他数据结构。如果需要这种能力,就需要选择其他数据结构。然而,如果不需要有序遍历数据,并且可以提前预测数据量的大小,那么哈希表在速度和易用性方面是无与伦比的。

——————————————————————————————————————

开放地址法–方法1–线性探测
在线性探测中,线性的查找空白单元。如果5421是要插入数据的位置,它已经被占用了,那么就使用5422,然后是5423,依次类推,数组下标一直递增,直到找到空位,这就叫做线性探测,因为它沿着数组下标一步一步顺序的查找空白单元。

package com.hash;

import java.io.BufferedReader;
import java.io.InputStreamReader;

class DataItem
{
    private  int  iData;
    //...................
    public  DataItem(int ii)
    {
        iData = ii;
    }

    //.............
    public  int  getKey()
    {
        return  iData;
    }

}


class  HashTable
{
    private  DataItem[]   hashArray; 
    private  int  arraySize;
    private  DataItem  nonItem;  //for  deleted  items

    //.....................
    public  HashTable(int  size)
    {
        arraySize = size;
        hashArray  =new  DataItem[arraySize];
        nonItem = new  DataItem(-1);   //deleted  item key  is  -1

    }

    //................
    public
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值