【数据结构】查找(顺序查找、二分查找、索引顺序查找、二叉排序树、平衡排序树、B树、B+树、哈希表)

目录

  • 数据结构——查找
    • 何为查找
      • 1. 查找表
      • 2. 关键字
      • 3. 查找方法效果评价指标——平均查找长度ASL(Average Search Length)
    • 静态查找表
      • 1.顺序查找
      • 2.二分查找
        • 二分查找判定树
      • 3.静态查找表—索引顺序表的查找
        • 索引顺序查找表的算法原理:
    • 动态查找树表
      • 1. 二叉排序树
        • 2. 二叉树的检索算法
        • 3. 二叉排序树的插入算法
        • 4. 二叉排序树的删除算法
        • 5. 最佳二叉排序树
      • 2.平衡二叉树
        • 平衡二叉树(AVL树)(平衡二叉排序树)
        • 平衡旋转技术
      • B-树 和B+树
    • 哈希表查找
      • 哈希表"冲突"现象——冲突处理
        • 1. 开放定址法
        • 2. 再哈希表法
        • 3. 链地址法
        • 4. 建立一个公共溢出区
      • 哈希表的查找
      • 哈希表的删除操作

数据结构——查找

何为查找

1. 查找表

  1. 查找表同一类型的数据元素(或记录)构成的集合

  2. 查找表的操作包括:

  1. 查询某个特定的数据元素是否在查找表中;
  2. 检索某个特定的数据元素的各种属性;
  3. 在查找表中插入一个数据元素;
  4. 从查找表中删去某个数据元素。
  1. 查找表的分类
  1. 静态查找表:只允许做查询和检索操作的查找表。
  2. 动态查找表:除查询和检索操作外,还允许进行插入和删除操作的查找表。

2. 关键字

关键字:是**数据元素(或记录)**中某个数据项的值,用以标识(识别)一个数据元素(或记录)

若此关键字可以识别唯一的一个记录,则称之谓**“主关键字”**
若此关键字能识别若干记录,则称之谓**“次关键字”**
查找表的查询和检索通常是根据关键字进行的

根据给定的值,在查找表中确定一个其关键字等于给定值的数据元素或记录

  1. 若查找表中存在这样一个记录(数据元素),则称查找成功。查找结果给出整个记录(数据元素)的信息,或指示该记录(数据元素)在查找表中的位置;
  2. 否则称此查找不成功。查找结果给出“空记录 ”或“空指针

3. 查找方法效果评价指标——平均查找长度ASL(Average Search Length)

查找速度:平均查找长度ASL(Average Search Length)-为确定记录在表中的位置,需要与给定值进行比较的次数的期望值叫查找算法的平均查找长度

静态查找表顺序查找性能分析:
查找成功的平均查找长度(查找成功的情况下,平均找一个数据元素需要的比较次数称为查找成功的平均查找(检索)长度):
A S L = ( 1 + 2 + … + n ) / n = ( n + 1 ) / 2 ASL=(1+2+…+n)/n=(n+1)/2 ASL=(1+2++n)/n=(n+1)/2
说明:假设每个数据元素查找的概率相同

查找一次的平均检索长度(成功,失败)(*)
A S L = ( n + 1 ) / 2 + ( 1 + 2 + … + n ) / ( 2 ∗ n ) = 3 ( n + 1 ) / 4 ASL=(n+1)/2+(1+2+…+n)/(2*n)=3(n+1)/4 ASL=(n+1)/2+(1+2++n)/(2n)=3(n+1)/4
说明:假设每个数据元素查找的概率相同,并且查找一次成功失败的概率也相同

静态查找表

1.顺序查找

查找方法:从表的一端顺序找到表的另一端 (以线性表表示静态查找表)

  1. 存储结构无特殊要求(数组或链表都可以的)
  2. 元素顺序无要求(有序无序都可以的 )
//顺序表定义
#define max 100
typedef struct{
	KeyType key; ;//说明:KeyType代表关键字的类型
	//……;
}ElemType 

typedef struct{ 
	ElemType elem[max]; 
	int length;
}SqList;
SqList L;

顺序查找:

int search(SqList L, KeyTypex){ 
	//KeyType代表关键字的类型
	for(int i=0;i<L.length;i++)
		if(L.elem[i].key==x) 
			return i+1;//找到数据的位置  +1为了方便表示第几个数据
	return 0;
}
//说明:返回0说明没找到;若找到,返回是x线性表的第几个数据元素

为提高查找速度,设置哨兵项;查找表组织成线性表,线性表的数据元素从下标为1的数组元素开始存放;下标为0的数组元素作为哨兵项(说明:哨兵可设在低端,也可以设在高端)
查找x,首先将x放在下标为0的数组元素(哨兵),从表尾开始比较。若在哨兵
处相等
,说明没找到,否则找到

int srearch(SqList L,KeyTypex)//KeyType代表关键字的类型
{ 
	int k=L.length;
	L.elem[0].key=x;
	while(x!=L.elem[k].key)
		k--;
	return k;
}

//L.elem[0]哨兵项
//说明:返回0说明没找到;若找到,返回是x线性表的第几个数据元素
//说明2:哨兵也可以设在线性表的表尾

静态查找表顺序查找性能分析:
查找成功的平均查找长度(查找成功的情况下,平均找一个数据元素需要的比较次数称为查找成功的平均查找(检索)长度):
A S L = ( 1 + 2 + … + n ) / n = ( n + 1 ) / 2 ASL=(1+2+…+n)/n=(n+1)/2 ASL=(1+2++n)/n=(n+1)/2
说明:假设每个数据元素查找的概率相同

查找一次的平均检索长度(成功,失败)(*)
A S L = ( n + 1 ) / 2 + ( 1 + 2 + … + n ) / ( 2 ∗ n ) = 3 ( n + 1 ) / 4 ASL=(n+1)/2+(1+2+…+n)/(2*n)=3(n+1)/4 ASL=(n+1)/2+(1+2++n)/(2n)=3(n+1)/4
说明:假设每个数据元素查找的概率相同,并且查找一次成功失败的概率也相同

2.二分查找

采用二分查找的要求:查找表组织成有序线性表(递增或递减),且采用顺序存储结构
特点:通过一次比较,将查找范围缩小一半

二分查找通用模板:

// 在单调递增序列a中查找>=x的数中最小的一个(即x或x的后继)
while (low < high)
{
    int mid = (low + high) / 2;
    if (a[mid] >= x)
        high = mid;

    else
        low = mid + 1;
}

// 在单调递增序列a中查找<=x的数中最大的一个(即x或x的前驱)
while (low < high)
{
    int mid = (low + high + 1) / 2;

    if (a[mid] <= x)
        low = mid;

    else
        high = mid - 1;
}

二分查找算法原理:

//有序(递增或递减),顺序存储结构
int binaryS(SqList L, KeyType x){

	int low=0, high=L.length-1, m;
	
	 while(low<=high){
	 	m=(low+high)/2;//
	 	
	 	if(L.elem[m].key==x) 
	 		return m+1; //若找到,返回是x线性表的第几个数据元素
	 	if(L.elem[m].key>x) 
	 		high=m-1; 
	 	else 
	 		low=m+1;
	} 
	
	return 0;
}
//说明:返回0说明没找到;若找到,返回是x线性表的第几个数据元素

■ 二分查找的效率高,但是要将表按关键字排序。而排序本身是一种很费时的运算。既使采用高效率的排序方法也要花费 O ( n l o g n ) O(nlogn) O(nlogn)的时间。
■ 二分查找只适用顺序存储结构。为保持表的有序性,在顺序结构里插入和删除都必须移动大量的数据元素。因此,二分查找特别适用于那种一经建立就很少改动、而又经常需要查找的线性表。
■ 对那些查找少而又经常需要改动的线性表,可采用链表作存储结构,进行顺序查找链表上无法实现二分查找。(*)
在这里插入图片描述
在这里插入图片描述

二分查找判定树

在这里插入图片描述

在这里插入图片描述

3.静态查找表—索引顺序表的查找

线性表分成若干块,每一块中的键值存储顺序任意的,块与块之间****按键值排序,即后一块中的所有记录的关键字的值均大于前一块中最大键值。

建立一个索引表,该表中的每一项对应于线性表中的一块,每一项由键域(存放相应块的最大键值)和链域(存放指向本块地一个结点的指针)组成。

适用条件:分块有序表

索引顺序表的查找:

■ 首先对索引表采用二分查找顺序查找方法查找,以确定待查记录所在的。 ■
在线性表查找k,若其在线性表中存在,且位于第i块,那么一定有:第i-1块的 最大键值 < k ≤ 第 i 块的最大键值 最大键值<k≤第i块的最大键值 最大键值<ki块的最大键值。 ■
然后在相应的块中进行顺序查找

数据结构(结构体):

typedef struct{    
	KeyType key;    //关键字域
    //…… ;                   // 其它域
}ElemType;//数据结构

typedef struct{    
	ElemType *elem;   // 数据元素存储空间基址
    int length;    // 表的长度
}SSTable;//顺序表

typedef struct{  
  	KeyType MaxKey; //本块最大关键字
   	int FirstLink; //本块第一个结点下标
}IndexTable;//索引表的类型

索引顺序查找表的算法原理:
int Seach_Index(SSTable ST,IndexTable IT[],int b,int n,KeyType k){  		
	int i=1,j;
	//b 为块儿数  Maxkey为每块儿中的最大值
	//索引表查找
   	while((k>IT[i].MaxKey)&&(i<=b))  
          i++;
          
   	if(i>b){  
   		printf("\nNot found");  
   		return(0); 
   	}
   	
   	j=IT[i].FirstLink;      
   	
   	//块儿内查找
   	while((k!=ST.elem[j].key)&&(ST.elem[j].key<=IT[i].MaxKey)  &&(j<n))
    	j++; 
    
    //输出查找结果	
   if(k!=ST.elem[j].key){
   		j=0; 
   		printf("\nNot found"); 
   	}
   return(j);
}

■ 表长为n的线性表,整个表分为b块,前 b-1块中的记录数为s=⎡n/b⎤,第b块中的记录数小于或等于s。

A S L = ( b + 1 ) / 2 + ( s + 1 ) / 2 ASL=(b+1)/2+(s+1)/2 ASL=(b+1)/2+(s+1)/2
(*)
■ 当 s = 根号n ,ASL最小 根号n +1

①索引表查找可使用何方法?①顺序、折半查找
块内查找可使用何方法? ②只能使用顺序查找
③数据可否用链式存储? ③可以使用链式存储
对那些查找少而又经常需要改动的线性表,可采用链表作存储结构,进行顺序查找链表上无法实现二分查找。(*)

动态查找树表

1. 二叉排序树

  1. 二叉排序树定义:

二叉排序树或者是一棵空树;或者是具有如下特性的二叉树:

  1. 若它的左子树不空,则子树上所有结点的值均小于根结点的值;
  2. 若它的右子树不空,则子树上所有结点的值均大于根结点的值;
  3. 它的左、右子树也都分别是二叉排序树 (递归)
  1. 二叉排序树的中序遍历结果递增有序
    判断一棵二叉树是否为二叉排序树:看其中序遍历结果是否递增有序
    因此,一个无序序列,可通过构建一棵二叉排序树而成为有序序列

  2. 二叉排序树的主要作用与操作

■ 二叉排序树主要作用:检索,排序
■二叉排序树主要操作:检索,插入(建立),删除

检索:

■ 在二叉排序树中查找是否存在值为x的结点。
查找过程为
① 若二叉排序树为空,查找失败。
②否则,将x与二叉排序树的根结点关键字值比较:若相等,查找成功,结束;
否则,
a.若x小于根结点关键字,在左子树上继续进行,转①
b.若x大于根结点关键字,在右子树上继续进行,转①

  1. 二叉排序树的存储结构**(二叉链表)**

//二叉链表作为二叉排序树的存储结构
typedef struct NODE{
	int key;//数据元素的关键字
	//… ;//数据元素的其他数据项 
	struct NODE *lc,*rc;
}BiNode,*BiTree;

2. 二叉树的检索算法
//二叉排序树的检索算法
Bitree Search(BiNode *t, int x){ 
	BiTree p; //
	p=t;
	while(p!=NULL){ //没找到就是返回空指针
		if (x==p->key)  //找到就返回
			return p; 
			
		if (x < p->key) //左右搜索
			p=p->lc;
		else 
			p=p->rc;
}
return p;
}//函数返回查找结果,没找到为空指针!

在这里插入图片描述

3. 二叉排序树的插入算法

向二叉排序树中插入x:
先要在二叉排序树中进行查找,若查找成功, 按二叉排序树定义,待插入数据已存在,不用插入;查找不成功时,则插入之。
新插入结点一定是作为叶子结点添加上去的。(*)

建立一棵二叉排序树则是逐个插入结点的过程。(*)
同一组数据,输入顺序不同所建二叉排序树不同

//

int Insert(Bitree &t,int x)//二叉排序树的插入算法
{  
	BiTree q, p, s;
	q=NULL; 
	p=t; ;//p为正在查看的节点,初始从根节点开始;q为p的双亲节点,根节点无双亲节点 			
	while(p!=NULL){ //查找
		if (x==p->key)      
			return 0;//在当前的二叉排序树中找到x,直接返回,不再做插入 
			
		q=p;//记录上一个位置
		
		if (x<p->key) 
			p=p->lc; 
		else 
			p=p->rc;
	}
	//最后没找到的话 就是插入到 q的左孩子或右孩子处
	
	s=(BiTree)malloc(sizeof(Binode)) ;//没找到x,做插入:先申请节点空间 
	s->key=x; //初始化
	s->lc=NULL; 
	s->rc=NULL ;//存放x,设为叶节点
	
	if(q==NULL)t=s;//若原先的二叉树是一棵空树,新插入的x对应的节点s为插入后二叉树的根节点
	//这个很重要 要不然空树 后面插入 就报错了。。。 
	else if(x<q->key) 
		q->lc=s; ;//插入s为q的孩子
	else 
		q->rc=s; 
		
	return 1;
}
4. 二叉排序树的删除算法

从二叉排序树中删除一个结点之后,使其仍能保持二叉排序树的特性。

  1. 被删结点为叶结点,由于删去叶结点后不影响整棵树的特性,所以只需将被删结点的双亲结点相应指针域改为空指针
  2. 若被删结点只有右子树 pr只有左子树 pl,此时,只需将prpl替换被删结点即可。
  3. 若被删结点既有左子树 pl 又有右子树pr ,可按中序遍历保持有序进行调整。

左右孩子均存在
左子树中最大的结点q替换被删结点,再删"q" 右子树中最小的结点w替换被删结点,再删"w"
结点q (和w)的特点是最多只有一个孩子

左子树中最大结点的特点是 左子树的根节点一直向右下 直到p->rchild==NULL为真,此时p就是那个左子树中的最大结点。
右子树中最小结点的特点是右子树的根节点一直向左下,直到p->lchild==NULL为真,此时p就是那个右子树中的最小结点。

5. 最佳二叉排序树

二叉排序树查找过程与二分查找判定树相似

  1. n个数据元素按照不同的输入顺序构造的二叉排序树不同,其中平均查找性能最高的为最佳二叉排序树.

  2. 按照二分查找判定树的建立过程建立的二叉排序树为最佳二叉排序树

  3. 二叉排序树的查找速度一般比顺序查找快,但如果是单枝树则一样快。
    注意单枝树的情况

2.平衡二叉树

平衡二叉树(AVL树)(平衡二叉排序树)

希望所建的二叉排序树均为平衡二叉树 (AVL树)
注意需要时刻考虑到 空树 以及 单枝树 的情况

平衡二叉树:空树,或者是具有下列性质的二叉树:

  1. 左、右子树都是平衡二叉树 (递归)
  2. 左、右子树高度之差的绝对值不超过1
  3. 树中每个结点的左、右子树高度之差的绝对值不大于1

结点的平衡因子 B F = 结点的左子树深度 − 右子树深度 结点的平衡因子BF=结点的左子树深度-右子树深度 结点的平衡因子BF=结点的左子树深度右子树深度
平衡二叉树每个结点的平衡因子的绝对值不超过1

平衡旋转技术

如果在一棵AVL树中插入一个新结点,就有可能造成失衡,此时必须重新调整树的结构,使之恢复平衡。我们称调整平衡过程为平衡旋转

平衡旋转可以归纳为四类:

  1. LL平衡旋转–单向右旋
  2. RR平衡旋转–单向左旋
  3. LR平衡旋转–先左旋后右旋
  4. RL平衡旋转–先右旋后左旋

旋转操作特点

  1. 对不平衡的最小子树操作
  2. 旋转后子树根节点平衡因子为0
  3. 旋转后子树深度不变故不影响全树,也不影响插入路径上所有祖先结点的平衡度

平衡树查找的时间复杂度为O(logn)

LL型—单向右旋

在这里插入图片描述

RR型—单向左旋
在这里插入图片描述

LR型—先左旋后右旋:
在这里插入图片描述RL型—先右旋后左旋
在这里插入图片描述

平衡树上进行查找的过程和二叉排序树相同,因此,查找过程中和给定值进行比较的关键字的个数不超过平衡二叉树的深度
(*)
在这里插入图片描述

B-树 和B+树

动态查找表,允许:查找,插入和删除操作

B-树是一种平衡的多路查找树。

哈希表查找

不同的表示方法,其差别仅在于:关键字和给定值进行比较的顺序不同

哈希函数是一个映象,即:将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可

哈希表构造方法:

哈希表"冲突"现象——冲突处理

实际应用中不保证总能找到一个不产生冲突的哈希函数。一般情况下,只能选择恰当的哈希函数,使冲突尽可能少地产生。

冲突处理方法:

  1. 开放定址法
  2. 再哈希表法
  3. 链地址法
  4. 建立一个公共溢出区
1. 开放定址法

d i d_i di称为增量,有三种取法:

  1. 线性探测再散列: d i = i d_i = i di=i
  2. 平方(二次)探测再散列: d i = 1 2 , − 1 2 , 2 2 , − 2 2 , 3 2 , − 3 2 , … d_i = 1^2 ,-1^2, 2^2, -2^2, 3^2, -3^2 , … di=12,12,22,22,32,32,
  3. 随机探测再散列: d i d_i di 是一组伪随机数列

在这里插入图片描述
在这里插入图片描述
增量 d i d_i di 应具有“完备性”(*)
在这里插入图片描述

2. 再哈希表法
3. 链地址法

在这里插入图片描述

4. 建立一个公共溢出区

将发生冲突的数据元素顺序存放于一个公共的溢出区

哈希表的查找

查找过程和造表过程一致
哈希表饱和的程度,装载因子 α = n / m α=n/m α=n/m 值的大小(n—数据数,m—表的长度)

在这里插入图片描述

哈希表的删除操作

开放定址法:删除一个数据,为保证查找工作的正常进行不能真删----加删除标志
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681033.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

fastjson反序列化漏洞复现

靶机IP&#xff1a;192.168.253.134 攻击机IP&#xff1a;192.168.142.44 1、靶机环境搭建 靶机&#xff1a;http://caiyun.feixin.10086.cn/dl/095CteuquNKVq 提取密码:NNPD RCE&#xff1a;http://caiyun.feixin.10086.cn/dl/095CuIsJQOw14 提取密码:J2vd 靶机账号密码&…

重生奇迹mu魔剑士

1、魔剑士低端装备-SF10(升级)亚特传说等S-S(PK)亚特奔雷魔神等。评价:优越的极品双属卓越,极其高的性价比,造福穷人玩家的装。 2、中端装备(只适合力魔剑士)-SF10S-S天魔斗神评价&#xff1a;与低级亚特等一样不过由于成本,装备PVP属性等原因,价钱稍贵点。 3、中端套装(只适合…

【成品论文】2024年数学建模国赛B题成品论文分享(点个关注,后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的蓝色字体链接&#xff0c;那是获取资料的入口&#xff01; 点击链接加入群聊【2024国赛资料合集】&#xff1a;http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kCe9u9pqQeBrMHgupi-R078l9TuU0RwSl&authKeyRjsYS3Piiw…

Java文件操作①——XML文件的读取

系列文章目录 文章目录 系列文章目录前言一、邂逅XML二、应用 DOM 方式解析 XML三、应用 SAX 方式解析 XML四、应用 DOM4J 及 JDOM 方式解析 XMLJDOM 方式解析 XMLDOM4J 方式解析 XML前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

淘宝在线扭蛋机开发过程中技术难点探讨

淘宝在线扭蛋机开发过程中涉及多个技术难点&#xff0c;这些难点可以从前端技术、后端架构、数据库设计、安全性保障、性能优化以及用户体验提升等方面进行详细阐述。以下是对这些技术难点的清晰归纳和分点表示&#xff1a; 1. 前端技术实现 技术栈选择&#xff1a;淘宝在线扭…

AD域渗透链和工具推荐

xmind下载地址&#xff1a; 链接: https://pan.baidu.com/s/1_BsmqLvN6aBnan0AIk5iBA 提取码: j97j

窗口重叠之鼠标事件透传

目的 Qt webview在下层展示url&#xff0c;上层覆盖最小化等按钮&#xff0c;支持大小拖拽&#xff0c;窗口移动。 如下图&#xff0c;除红框部分&#xff0c;其余异形部分作为url展示区 构想 想要实现该效果&#xff0c;需要在webview窗口上方动态创建两个窗口&#xff0c;…

大型零售企业总部到分公司数据发放,有没有更优化的方案?

大型零售企业在市场经济中扮演重要角色&#xff0c;是保证基础商品生产、流通和供给的重要一环。随着企业发展&#xff0c;很多大型零售企业都会在全国、乃至全球各地开设分公司&#xff0c;用以降低生产和运营成本&#xff0c;更好地提供本地化服务。 为了保证总部与分公司间信…

探索魁北克:IT专业人士的移民新天地

在这个数字化飞速发展的时代&#xff0c;IT专业人士无疑是推动社会进步的关键力量。魁北克省&#xff0c;作为加拿大的科技与文化中心&#xff0c;正以其开放的姿态和优越的移民政策&#xff0c;吸引着全球IT精英的目光。今天&#xff0c;让我们一起探索魁北克省为IT专业人士量…

25地信考研必看:含择校、备考、夏令营攻略资料分享

25考研学子们&#xff0c;考研准备要赶早&#xff0c;这里小编给大家整合准备了25考研需要关注的几个重要内容&#xff0c;需要的宝子收藏起来。 一、25地信考研的时间线&#xff1a; 大三&#xff1a; 择校、开始复习 大三暑假&#xff1a; 参加高校组织的夏令营&#xf…

Docker基础篇之Docker常规软件安装

文章目录 1. 总体步骤2. 安装tomcat3. 安装Mysql4. 安装Redis 1. 总体步骤 安装软件的总体步骤如下所示&#xff1a; 搜索镜像拉取镜像查看镜像启动镜像停止容器移除容器 2. 安装tomcat docker hub上查找tomcat镜像 或者使用一下命令查找&#xff1a; docker search tomca…

映射网络驱动器自动断开的解决方法

如果将驱动器映射到网络共享&#xff0c;映射的驱动器可能会在定期处于非活动状态后断开连接&#xff0c;并且 Windows 资源管理器可能会在映射驱动器的图标上显示红色 X。&#xff0c;出现此行为的原因是&#xff0c;系统可以在指定的超时期限后断开空闲连接&#xff0c; (默认…

echarts 交错柱状图, 对向柱状图, 双柱状图横向

设计图样式 上代码 父组件 <bar-chart :option"energyOption"></bar-chart>initChart() {//上周能耗排行榜this.black_label ["漫张农污处理设施","邓庄农污处理设施","王桥农污处理设施","甲庄农污处理设施"…

做抖音小店卖什么最赚钱?精准锁定爆款的技巧!新手商家必看

哈喽~我是电商月月 做抖音小店的核心就是选品&#xff0c;商品好&#xff0c;出单的几率就多&#xff0c;那么怎么选中一个好的商品&#xff0c;就是每个商家必须细琢的一个技巧&#xff01; 为了解答这个疑惑&#xff0c;今天月月就给大家介绍几个赚钱的类别&#xff0c;并教…

目标检测数据集 - 打架检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;打架检测数据集&#xff0c;真实监控场景高质量打架图片数据&#xff0c;涉及场景丰富&#xff0c;比如街道场景打架数据、酒吧场景打架数据、商店场景打架数据、公交车场景打架数据、监狱场景打架数据、空旷地打架数据、两人打架数据、多人群殴数据等。…

用cocos2d-python绘制游戏开发的新篇章

用cocos2d-python绘制游戏开发的新篇章 第一部分&#xff1a;背景 在游戏开发的世界中&#xff0c;寻找一个强大而灵活的框架至关重要。cocos2d-python是一个Python游戏开发框架&#xff0c;它提供了一套丰富的功能&#xff0c;用于创建2D游戏、图形和交互式应用。基于流行的c…

企业办公网安全管控挑战与解决方案

在数字化浪潮的推动下&#xff0c;企业正经历前所未有的变革。然而&#xff0c;随之而来的是一系列复杂的网络安全风险和挑战。我们的网络边界不再清晰&#xff0c;各种设备轻松接入企业网络&#xff0c;这不仅带来了便利&#xff0c;也极大地增加了安全风险。想象一下&#xf…

面试被问准备多久要孩子?这样回答

听说有人面试被问到多久要孩子的问题&#xff0c;当时觉得很尴尬&#xff0c;不知如何回答&#xff0c;怕回答的不好不被录用&#xff0c;其实你可以这样回答&#xff0c;让面试官心满意足。 A 面试官&#xff1a;结婚了吗&#xff1f; 我&#xff1a;结婚了 面试官&#xff1…

innovus:max_delay与path adjustment

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 一些过约束的path&#xff0c;比如端口in/out上的时序&#xff0c;我们需要让它更乐观以免过修浪费资源&#xff0c;反而让需要clean的path没修干净。这时候我们常用set_path_a…