数据结构
Lin_Dong_Tian
不积跬步,无以至千里!
展开
-
二叉树
1、树的基本概念:树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。 (1)每个元素称为结点(node); (2)有一个特定的结点被称为根结点或树根(root); (3)相关术语: 结点的度:一个结点含有的子树的个数 叶子结点或终端结点:度为0的结点 节点的层数:树根到节点的路径长度是该节点的层数,节点都...原创 2019-07-03 08:46:04 · 298 阅读 · 0 评论 -
HashMap与红黑树
一、为什么需要HashMap? 在我们写程序的时候经常会遇到数据检索等操作,对于几百个数据的小程序而言,数据的存储方式或是检索策略没有太大影响,但对于大数据,效率就会差很远。1、线性检索:线性检索是最为直白的方法,把所有数据都遍历一遍,然后找到你所需要的数据。其对应的数据结构就是数组,链表等线性结构,这种方式对于大数据而言效率极低,其时间复杂度为O(n)。2、二分搜索:...原创 2019-07-03 09:11:54 · 17142 阅读 · 4 评论 -
经典排序算法(1)——冒泡排序算法详解
冒泡排序是一种交换排序。什么是交换排序呢?交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。一、算法基本思想(1)基本思想冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算...原创 2019-10-07 10:27:49 · 1277 阅读 · 0 评论 -
经典排序算法(2)——插入排序算法/希尔排序详解
插入排序直接插入排序是一种最简单的插入排序。插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成。这个过程类似摸牌: 先拿一张 5 在手里, 再摸到一张 4,比 5 小,插到 5 前面, 摸到一张 6,嗯,比 5 大,插到 5 后面, 摸到一张 8,比 6 大,插到 6 后面, .... ...转载 2019-10-07 10:59:31 · 284 阅读 · 0 评论 -
经典排序算法(3)——选择排序详解
选择排序(selection sort) 首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最小值。即一下两步: 1、找最小元素 2...原创 2019-10-07 15:43:18 · 120 阅读 · 0 评论 -
经典排序算法(4)——快速排序详解
算法思想它的基本思想是:1、通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。2、然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。上图中,演示了快速排序的处理过程: 初始状态为一组无序的数组:2、4、5、1、3。 经过以上操作步骤后,完成了第一次的排序,得到新的数组:...转载 2019-10-07 16:16:05 · 149 阅读 · 0 评论 -
经典排序算法(5)——归并详解
要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法思想归并排序其实要做两件事: “分解”——将序列每次折半划分。 “合并”——将划分后的序列段两两合并后...原创 2019-10-07 17:16:13 · 225 阅读 · 1 评论