数据结构
文章平均质量分 67
smile_zhangwj
这个作者很懒,什么都没留下…
展开
-
链表总结之STL中迭代器失效问题
这里主要介绍链表的基本知识,加深对链表的了解,以及关于链表的常见的面试题。最后介绍STL中的迭代器失效的问题 一、链表基础知识 1.概念 链表是一种物理存储结构上非连续/非顺序的存储结构。链表的每个结点里面存储着下一个结点的指针,把存储数据元素的数据串链起来。2.结点组成 数据域:存储数据元素 ...原创 2018-05-05 10:10:03 · 433 阅读 · 0 评论 -
排序算法(1)---插入排序
插入排序分为直接插入排序和希尔排序,接下来分别对直接插入排序和希尔排序做以介绍。 插入排序 将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 算法过程分析: 具体例子分析: 时间复杂度 : 最坏情况下为O(n^2) 最优情况下时间复杂度为O(n) ...原创 2018-05-14 18:36:00 · 199 阅读 · 0 评论 -
排序算法(3) ---交换排序
应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。这里将主要介绍快速排序,以及快速排序的递归与非递归的实现和对快速排序的优化冒泡排序 冒泡排序是将大数或小数不断后移的一种思想,比较和交换都发生在两个相邻元素之间。 思想: 1.单趟排序:比较相邻的元素,如果第一个比第二个大(小),交换这两个元素,直到最后元素,则最后元素的值应该为最大或最...原创 2018-06-04 17:50:09 · 285 阅读 · 0 评论 -
排序算法(2)---选择排序
这里先介绍简单选择排序,然后在介绍堆排序,(堆排序是选择排序的一种)选择排序 定义: 选择排序(Selection Sort)是一种简单直观的排序算法。它是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法(比如序列【5,5,3】第一次就将第一个【5】与【3】交换...原创 2018-05-18 21:28:38 · 195 阅读 · 0 评论 -
排序算法(4)---归并排序&总结
归并排序 定义 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。思想 采用分治法思想 ,现将大问题进行分解,分解成小问题,再依次对小问题...原创 2018-06-14 16:58:28 · 270 阅读 · 0 评论 -
循环队列
队列是一种只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插),它的存储方式分为顺序队或链队,以循环队列更常见。 这里仅介绍顺序队以及顺序队存在的假溢出缺陷,进而引出循环队列。顺序队列 在顺序队列中,当队尾指针已经到数组的上界,不能再有入队操作,但其实数组中还有空位置,这就叫做“假溢出”,解决假溢出的途径----采用循环...原创 2018-07-03 10:54:18 · 59009 阅读 · 7 评论 -
算术表达式求值
中缀表达式 我们平时写的表达式称为中缀表达式。 eg: 1. 2 - 3*4 +5 2. 2* (3- 5) +7 正如上面的表达式,我们在计算的过程中,首先要注意运算符的优先级,其次要注意括号。 我们应如何判断运算符的优先级以及如何进行运算。后缀表达式 首先,我们可以将中缀表达式转化为后缀表达式(逆波兰表达式),然后进行运算...原创 2018-10-01 15:20:43 · 10981 阅读 · 1 评论 -
汉诺塔问题
汉诺塔问题是一个简单又经典的递归问题。 题目描述 汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。...原创 2018-10-01 17:49:58 · 2088 阅读 · 0 评论