复习:数据结构、排序算法

一、数据结构:
1.顺序表: --》逻辑上连续,物理上也连续存储。
(1)定长顺序表
(2)不定长顺序表 ----》c++ STL->vector
(3)数组:用于存储数据 数组只有一个数组名(数组首地址)
2.链表: --》逻辑上连续存储,物理上是不连续存储,每个数据结点除了保存数据本身以外,还至少有一个指针域,存储下一个结点的地址。
(1)单链表:每个结点只有一个数据域一个指针域,只能从前往后检索。
(2)双链表:每个结点都有一个数据域,两个指针域,既能从前向后检索,也能从后向前检索。
(3)循环链表:双向循环链表(头结点的前驱指针指向最后一个结点,尾结点的后继指针指向头结点)
3.栈:……先进后出的结构,只在一端进行插入和删除操作(Push Pop)
(1)顺序栈
(2)链栈(a.两个栈实现一个队列;b.中缀表达式转后缀表达式,以及求最终结果)
4.队列……先进先出的结构
(1)分顺序队列和链式队列;
(2)两个队列实现一个栈;
(3)循环队列–》顺序队列(判空和判满)–》空一个位置
(4)优先级队列–》出数据时,有两个权重–》优先级、顺序–》最大堆
(5)无锁队列
二、排序算法
1.冒泡排序
2.选择排序
3.直接插入排序。直接插入:数据越有序,效率越高。
4.希尔排序
##是分组的直接插入排序–》先对数据进行分组,使用直接插入算法使得组内有序,再分组,再直接插入使组内有序,直到分组只有一个时。
5.快速排序
(1)方法:先找一个基准,通过比较将待排序的分成两部分,前半部分都比基准小,后半部分都比基准大,递归用快速排序分别处理基准的前半部分和后半部分。
(2)快排的优化:a.选取数据的第一个,b.随机选择,c.三位取中(第一个和最后一个的中间位置),递归最后的数据量较小时,使用直接插入排序聚集相等元素。
(3)扩充:非递归的快排–》栈或者队列。
6.堆排序
建堆方法:(1)从最后一棵子树开始向上处理;(2)每次处理过程都是从要处理的子树的根节点开始向下比较。
7.字符串匹配算法
(1)BF算法
(2)KMP算法
字符串匹配算法

发布了8 篇原创文章 · 获赞 13 · 访问量 286

猜你喜欢

转载自blog.csdn.net/weixin_44737923/article/details/100828429