数据结构与算法
Jack LDZ
这个作者很懒,什么都没留下…
展开
-
数据结构——基础(算法、复杂度、迭代与递归、动态规划)
目录一、计算(数据结构与算法研究的对象和目标)二、计算模型一般情况下我们主要考虑时间复杂度三、大O记号常见时间复杂度的分级四、算法分析级数级数在循环中的应用算法分析示例五、迭代与递归减而治之分而治之六、动态规划一、计算(数据结构与算法研究的对象和目标)计算:即信息处理。是指借助某种工具,遵循一定规则,以明确而机械的形式进行的操作。计算...原创 2018-10-16 14:42:06 · 5131 阅读 · 1 评论 -
数据结构——概念
数据:程序的操作对象,用于描述客观事物可以输入到计算机 可以被计算机程序处理数据元素:组成数据的基本单位数据对象:性质相同的数据元素的集合数据项:一个数据元素由若干数据项组成如图所示:数据元素之间不是独立的,存在特定的关系,这些关系即结构。数据结构 指数据对象中数据元素之间的关系。数据元素之间的 逻辑结构:集合结构数据元素之间没有特别的关系,仅同属...转载 2018-10-16 00:02:04 · 196 阅读 · 0 评论 -
冒泡排序原理及两种代码实现(c/c++)
有序序列中,任意一对相邻元素都是顺序排列。无序序列中,至少有一对相邻元素为逆序排列。冒泡法是一种经典且稳定的排序方法。它采取相邻元素之间进行比较的策略,若顺序相反则交换元素位置,逐渐将大数沉底,小数上浮(或相反)。在程序上有两种实现方式:第一种方式假设数组中有 n 个元素,从第一个元素开始依次与相邻元素做比较,若顺序相反则交换位置。直到最后一个元素参与比较,将会发生 n-1 次元素...原创 2019-01-18 17:33:32 · 538 阅读 · 0 评论 -
选择排序原理及代码实现(c/c++)
选择排序与冒泡排序类似,采用逐轮扫描最值然后将其置于顶端的方式完成数组排序。区别是,冒泡法采取的是依次比较相邻元素并不断交换逆序元素的策略,逐步将最值向前推进;而选择排序法采取标记最值位置的策略,扫描过程中不交换元素位置,只修改标记,直至找到最值,将最值交换到顶端。相对于冒泡法,可显著减少交换次数,每轮扫描至多交换1次。原理:设置最值位置标记,逐轮扫描未排序部分元素最值。每一轮扫描过程中,以未...原创 2019-01-25 12:34:20 · 1321 阅读 · 0 评论 -
快速排序原理及三种思路的代码实现(c/c++)
内排序:在排序过程中,所有元素调到内存中进行的排序,称为内排序。内排序是排序的基础。内排序效率用比较次数来衡量。外排序:在数据量大的情况下,只能分块排序,但块与块间不能保证有序。外排序用读/写外存的次数来衡量其效率。快速排序是冒泡排序的改进版,也是最好的一种内排序方法。原理(分治思想):1.在待排序的元素任取一个元素作为基准(通常选第一个元素),称为基准元素;2.将待排序的元素...原创 2019-01-29 17:55:26 · 1004 阅读 · 0 评论 -
插入排序原理及其代码实现(c/c++)
插入排序是与冒泡排序具有相同的时间复杂度、空间复杂度以及稳定性(稳定性是指排序过程中不改变相同元素的顺序)的一种常用排序算法。原理:类似打牌时整理手牌的做法,将无序序列的首个元素当做有序子序列,然后从无序序列的第二个元素开始,逐个插入前面的有序子序列以形成新的有序子序列,直至最后一个元素插入前面所有元素组成的有序子序列使得原无序序列完全有序。如下图:具体操作步骤为:只含有 1 个元...原创 2019-01-23 16:18:14 · 1520 阅读 · 0 评论 -
合并(归并)排序原理及代码实现(c/c++)
合并排序是采用分治法,先将无序序列划分为有序子序列,再将有序子序列合并成一个有序序列的有效的排序算法。原理:先将无序序列利用二分法划分为子序列,直至每个子序列只有一个元素(单元素序列必有序),然后再对有序子序列逐步(两两)进行合并排序。合并方法是循环的将两个有序子序列当前的首元素进行比较,较小的元素取出,置入合并序列的左边空置位,直至其中一个子序列的最后一个元素置入合并序列中。最后将另一个...原创 2019-01-24 18:06:05 · 33729 阅读 · 9 评论