查找基本概念


顺序查找

折半查找(二分查找顺序存储 )

查找一个数据先给他折中,看看要查找的是不是大于中间值如果大于前面的就不用查找了

l和r指向对应下标




二分查找补充


上图描述如何构造这般查找判定树,一般都是下取整

二分查找最多次数公式红圈里的,平均查找长度



哈希表定义

哈希函数构造与处理冲突

质数只能被1和它本身整除

以上情况冲突了




处理冲突拓展和装填因子


有相同的直接这样链起来

题


因为是模13所以结果只能是0到12
小顶堆大顶堆


建立大顶堆和小顶堆

**最后的节点不用管从最下开始 **


排序基本概念



图片里有错误 快速排序平均时间复杂度位o(log2n),空间复杂度位o(n)
直接插入排序




**归为就是每进行一次排序能不能确定他的最终位置 **

基本有序完全有序就是直接插入排序时间复杂度最好
希尔排序

直接插入,希尔,计数排序动画演示
序列中只有1到9适合计数排序
https://www.bilibili.com/video/BV1UP4y1A79a/?p=36&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
题

第一个是有序序列跟第一个比
基本有序序列用直接插入排序

简单选择排序(不稳定可归为)

假设第一个为最小的,从当前位置下一个位置找有没有比最小的还要小,找到1再看看有没有其他的比1小如果没有直接交换位置
堆排序(可归位)





题


冒泡排序

从第一个元素开始每次比较第一个和第二个元素如果1大于2就交换




**稳定可归位 **

前面几个排序记相应概念即可
快速排序(重点)(可归位不稳定基于分治)


把4的值给第一个

找到大于p的值让a【j】=a【i】下图
**

然后划分左右区间

p是保存首元素的值


从后往前找小于p的(j找),ai=aj,然后从前往后找大于p的,找到了让aj=ai。。。。接下来重复第一步。直到i=j 最后变成如上图 分成两个


基本有序对直接插入排序是最好情况,对快速排序是最坏
题

排除c是因为c是基本有序的b也是只不过是逆序


从后往前找小于从前往后找大于

哪个更乱哪个效率高,D的右半部分是有序的,所以排除D
归并排序


划分至生一个元素一组
稳定但不能归位

题

分治法的意思是把大问题划分为小问题分而治之


插入排序就是跟第一个排序



上面4个比较6次因为只要有一个小于等于后一个这个就可跳过比较下一个





















