![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
星光不负赶路人_
这个作者很懒,什么都没留下…
展开
-
排序之快速排序(出现概率极高的面试题!!!)
原理快速排序是对冒泡排序的改进,采用了分治策略(一般也会使用递归),因此减少了比较的次数。基本思想设置一个基准值,这个基准点可以随意设置,但是一般来说我们选择第一个数据。用left标识数组的第一个数据,right标识数组的最后一个数据如果right位上的数据大于基准值,则继续往后遍历(right- -);’如果小于基准值,则将right位上的值赋值给left位。让left往前遍历, ...原创 2020-04-26 19:50:25 · 586 阅读 · 0 评论 -
数据结构——栈和队列
1.栈1.1栈的概念及结构栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。1.2栈的实现栈的实现一般可以使用数组或者链表实现,相对而言...原创 2019-07-26 16:34:19 · 109 阅读 · 0 评论 -
排序之归并排序
归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有 序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。代码实现:void mergeSortInternal()...原创 2019-07-22 15:23:43 · 144 阅读 · 0 评论 -
排序之冒泡排序
冒泡排序冒泡排序属于交换排序算法,交换排序算法的思想是两两比较待排序记录的关键字,若两个纪录的次序相反则交换这两个记录,直到没有反序的记录为止。冒泡排序的基本思想:比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步...原创 2019-07-22 15:22:58 · 169 阅读 · 0 评论 -
排序之堆排序
堆排序堆排序(Heapsort)是指利用堆这种数据结构进行排序的一种算法,它是选择排序的一种。我们可以把堆看成一棵完全二叉树,这棵完全二叉树满足:任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小,则这样的堆叫做大堆;若父亲小孩子大,则这样的堆叫作小堆。大堆(每个节点的值大于等于孩子节点的堆)小堆(每个节点的值小于等于孩子节点的堆)**堆排序的基本思想:**代...原创 2019-07-22 15:22:32 · 139 阅读 · 0 评论 -
排序之选择排序
选择排序选择排序的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。直接选择排序:在待排序元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换,在剩余的array[i]–array[n-2](array[i+...原创 2019-07-22 15:21:59 · 447 阅读 · 0 评论 -
排序之希尔排序
希尔排序希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个 组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工 作。当到达=1时,所有记录在统一组内排好序。...原创 2019-07-22 15:21:03 · 122 阅读 · 0 评论 -
数据结构——插入排序
排序的概念**排序:**所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。**稳定性:**假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。**内部排序:*...原创 2019-07-22 15:20:35 · 132 阅读 · 0 评论 -
数据结构——堆
堆1.堆的定义堆分为大根堆和小根堆两种。(1)若树根结点存在左右孩子,且根结点的值大于等于左右孩子结点的值,则为大根堆。(2)若树根结点存在左右孩子,且根结点的值小于等于左右孩子结点的值,则为小根堆。(3)以左、右孩子为根的子树又各是一个堆。2、堆的性质:**·**堆中某个节点的值总是不大于或不小于其父节点的值;**·**堆总是一棵完全二叉树3、堆的实现3.1 堆向下调整算...原创 2019-07-24 20:11:00 · 212 阅读 · 1 评论 -
数据结构——二叉树
1.树概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多 个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结 点可以分为多个不相交的子树 。节点的度:一个节点含有的子树的个...原创 2019-07-23 21:38:44 · 110 阅读 · 0 评论