最近要开始准备秋招了,作为非计算机出身,还有大量的坑需要填,这几天研究了算法入门书——《啊哈算法》,算是读过最通俗易懂的了,趁还有印象总结一下,以便未来参考。
一、排序
1 桶排序——用book(数组)标记每个数出现的次数
注意: 若0-1000排序,需要1001个桶;时间复杂度为O(m+n)
2 冒泡排序——每次比较相邻的两个元素,如果他们的顺序错误,则交换过来
注意: 若n个数排序,则n-1个数归位;时间复杂度为O(N平方),因为需要双重嵌套循环。
3 快速排序——每一轮基准数归位
注意: 基准数、哨兵、二分思想;最坏复杂度O(N平方),平均(NlogN)
4例子?:
买书:涉及到去重与排序
桶排序 或 先排序再去重
二、栈、队列、链表
1 队列
删除一个数:head++
head == tail 空队列
出队操作,入队操作,先进先出
是广度优先算法,队列优化,Bellman-Ford最短路算法的核心数据结构
结构体包括:data+ head + tail
2 栈
出栈操作,入栈操作,后进先出
典型例子如回文数的判定
结构体包括:data + top
3 例子?——小猫钓鱼
注意:C语言数组的下标由0开始;可以用book来代替枚举
<