总览
数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
-
线性表:
顺序:数组
Golang里面的切片数据的个数不确定:var strSlice []string = []string{“tom”,“rose”}
类似Java中的ArrayList,实现数组的动态扩缩容
链式:普通链表,两种最有名的线性表:栈还是队列 -
散列表(哈希表):
如何解决哈希冲突?
链表法(chaining) 在哈希表中,每一个桶(bucket)或者槽(slot)都会对应一条链表,所有哈希值相同的元素放到相同槽位对应的链表中。在插入的时候,我们可以通过散列函数计算出对应的散列槽位,将元素插入到对应的链表即可,时间复杂度为O(1);在查找或删除元素时,我们同样通过散列函数计算出对应的散列槽位,然后再通过遍历链表进行查找或删除,时间复杂度为O(k),k为链表长度。 -
非线性数据结构——树(data,left,right)
-
非线性数据结构——图(邻接矩阵),如存储:社交网络中的好友关系,有向,无向,权重,拓扑排序
-
算法:
1). 排序
2). 查找:二分查找
排序
排序:https://baijiahao.baidu.com/s?id=1733062257477027941&wfr=spider&for=pc
快速排序:https://www.jb51.net/article/211611.htm
插入排序:https://www.jianshu.com/p/673b22785d18