当一个元素被加入集合时,通过k个散列函数将这个元素映射成一个位数组中的k个点,将它们置为1,检索时只要看是不是都是1,就可以,只要有一个零就不是,全是1,可能是
排序 概念
就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来
数据表
待排序数据元素的有限集合
排序码
通常数据元素有多个属性域,其中有一个数据域可用来区分元素,作为排序依据,该域即为排序码
如果在数据表中各个元素的排序码互不相同,这种排序码称为主排序码
排序算法的稳定性两个元素R[i]R[j],它们排序码K[i]==K[j],且在排序之前,元素R[i]在R[j]之前,元素在R[i]和R[j]的顺序不变
常见排序算法
插入排序
直接插入排序
插入到已排序序列中,先找位置,然后将位置之后得元素后移
稳定
希尔排序
缩小增量排序
选择排序
选择排序
每次把最小的元素换在最前面
锦标赛排序
一直两两比较找出获胜者,将这个不再比较,其他继续两两比较,取得获胜者,一直循环
不稳定
堆排序
升序创建大堆,否则创建小堆
不稳定
交换排序
冒泡排序
稳定
依次比较相邻两个元素,不满足条件交换
快速排序
取一个基准值将比它小得放在左侧,大的放在右侧。左右两部分递归取基准值继续分
归并排序
归并排序
将待排序的序列分成两个等长的子序列,然后将它们合并成一个序列
非比较排序
计数排序
基数排序
图 由顶点集合及顶点间关系组成的一种数据结构 顶点和边
顶点
图中结点称为结点
边
顶点与顶点之间有一条边
图的分类
有向图
在有向图中,顶点对<x,y>是有序的<x,y><y,x>是不同的两条边
无向图
(x,y)(y,x)是一条边
完全图在有n个顶点的无向图中,若有n*(n-1)/2条边,即任意两个两个顶点之间有且只有一条边
在n个顶点的有向图中,若有n*(n-1)条边,即任意两个顶点之间有且仅有方向相反的边
邻接结点在无向图中G中,若(u,v)是E(G)中的一条边,则称u和v互为邻接顶点,并称(u,v)依附于顶点u和v
在有向图G中,若<u,v>是E(G)中的一条边,则称顶点u邻接到v,顶点v邻接自顶点u,并称边<u,v>与顶点u和v相关联
顶点的度
与它相关联的边的条数