查找基本概念
顺序查找
折半查找(二分查找顺序存储 )
查找一个数据先给他折中,看看要查找的是不是大于中间值如果大于前面的就不用查找了
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次因为只要有一个小于等于后一个这个就可跳过比较下一个