数据结构:哈希表、排序和查找

一、哈希算法

1.将数据通过哈希算法映射成一个健值,存取都在同一个位置,实现数据的高效存储和查找,时间复杂度由O(n)->O(1)

2.哈希碰撞:多个数据通过哈希算法得到的键值相同

二、哈希表

1.构建哈希表存放0-100之间的数据

2.哈希算法的选择:将此数据的个位作为键值,然后用链表依次存入

三、排序和查找

(一)排序

1.冒泡排序:相邻两个元素比较,大的往后排,循环len-1次。

1.1时间复杂度为O(n^2)

1.2稳定的排序算法(两个同样小的,后面的会被排到前面去)

2.选择排序:设每次循环前第一个元素为最小的下标为min,用这个依次去比较,如果有更小的将下标赋给min,循环比较完如果下标有变则交换元素。(存储地址大用选择排序)

2.1时间复杂度O(n^2)

2.2不稳定排序算法

3.插入排序:从第二个元素开始,依次和前面的元素比较,如果前一个比自己还小或者走到头,插入即可。

3.1时间复杂度O(n^2),如果数组组有序时间复杂度可降低到O(n)

3.2稳定的排序算法

4.希尔排序:对半分,每一半的相同下标的元素用插入排序排序,然后循环继续分半直到为1

4.1时间复杂度:O(nlogn)

4.2不稳定的排序算法

5.快速排序:左右两边low和high指针,先拿出来左边的第一个元素20,然后从右边high开始与20比较。20<33high左移,20>2将2放到low那里,然后开始一定low。最后将20放在两个指针相遇的地方,继续从两边开始进行此操作。

5.1时间复杂度O(nlongn)

5.2不稳定排序算法

(二)查找(二分查找)

1.时间复杂度为O(logn)

相关推荐
by2099914 小时前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表
Code_Solitude14 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
Pniubi15 小时前
快速排序(力扣基础)(递归)
java·数据结构·算法
inrichtt1 天前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
HPtiger1 天前
数据结构——选择排序
数据结构·算法·排序算法
丑梨数据1 天前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
烂蜻蜓1 天前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
开开心心就好1 天前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
CS创新实验室1 天前
一棵树怎么做到“自平衡还不太费力“?——红黑树的旋转与染色
数据结构·算法·红黑树·408·计算机考研
Logic1011 天前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度