数据结构与算法(2)|青训营笔记

78 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇

如何设置一个较好的算法,可以结合几种算法一起使用

在设计中,结合三种排序的优点: 对于短排序(小于某长度)应该使用插入排序,在12~32内;其他的情况采用快排来保证性能当快排表现不乐观的情况,使用堆排序来限制最坏情况 ;当最终pivot(中心点)的位置离序列两端很接近时(距离小于length/8)判定其表现不佳,当这种情况的次数达到limit(限制,即bits.Len(length))时,切换到堆排序

静态链表就是:

一个数组类型是一个类,类里面有data和cur,cur就是指向他下一个连接的,不在按照数组下标顺序连接(是为了给没有指针的高级语言使用的)

两栈共享空间结构

(1)创建一个数组,数组长度为n,然后有两个指针:top1,top2; (2)top1初始值为-1,top2的初始值为n; (3)当为初始值的时候,栈为空栈,当栈1的top1=n-1时,栈1满了,当栈2的top2=0时,栈2满了; (4)当两个指针相差1时,为满栈,也就是top1+1==top2; (5)如果进栈1,则top1++,进栈2,则top2--,一个栈增长时,另一个栈在缩减,一般用于买卖关系

栈的两种储存结构

栈的顺序存储结构中,把下标为0的当做栈顶 栈的链式存储结构中,把头节点作为栈顶 如果栈的使用过程中元素变化不可预估,有时很小,有时很大,那么最好用链栈,反之,如果它的变化在可控范围内,建议使用顺序栈会更好一点

串的链式存储结构除了在连接串与串操作时有一定方便之外,总的来说不如顺序存储灵活,性能也不如顺序存储结构好。