随笔分类 -  C++_十大排序算法

摘要:1、给定二叉树,找到它的最小深度。最小深度是从根节点到最近叶节点的最短路径上的节点数。 2、给定二叉树,返回其节点值的后序遍历。 例如:给定二叉树{1,#,2,3}, 1 \ 2 / 3 返回[3,2,1]。 注意:递归解决方案很简单,你可以迭代地做吗? 思路: 前序遍历 根->左->右 变成 根- 阅读全文
posted @ 2019-07-16 10:12 追风的小蚂蚁 阅读(178) 评论(0) 推荐(0)
摘要:1、使用常量空间复杂度在O(n log n)时间内对链表进行排序。 思路: 因为题目要求复杂度为O(nlogn),故可以考虑归并排序的思想。 归并排序的一般步骤为: 1)将待排序数组(链表)取中点并一分为二; 2)递归地对左半部分进行归并排序; 3)递归地对右半部分进行归并排序; 4)将两个半部分进 阅读全文
posted @ 2019-07-11 11:11 追风的小蚂蚁 阅读(201) 评论(0) 推荐(0)
摘要:1、给定字符串s,分区s使得分区的每个子字符串都是回文。 返回s的所有可能的回文分区。例如,给定s =“aab”,返回 2、给定文件的绝对路径(Unix风格),简化它。例如,path =“/ home /”,=>“/ home”path =“/ a /./ b /../../ c /”,=>“/ c 阅读全文
posted @ 2019-07-10 09:53 追风的小蚂蚁 阅读(229) 评论(0) 推荐(0)
摘要:数组: 1、给定一个数组和一个值,删除该值的所有实例并返回新的长度。 元素的顺序可以改变。 你留下的新长度并不重要 这道题很坑爹,是牛客网里的一道题,也不知道是我的理解能力差,还是它的英文写的有问题,它的测试案例很偏,不得不像下面这么做。 2、给定排序数组,删除重复项,使每个元素只出现一次并返回新长 阅读全文
posted @ 2019-07-04 21:26 追风的小蚂蚁 阅读(296) 评论(0) 推荐(0)
摘要:定义: 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳 阅读全文
posted @ 2019-05-20 11:13 追风的小蚂蚁 阅读(137) 评论(0) 推荐(0)
摘要:定义: 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 排序思想: 将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区; 将堆顶元素R[1]与最 阅读全文
posted @ 2019-05-20 10:42 追风的小蚂蚁 阅读(141) 评论(0) 推荐(0)
摘要:计数排序思想: 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的 阅读全文
posted @ 2019-05-19 15:43 追风的小蚂蚁 阅读(279) 评论(0) 推荐(0)
摘要:插入排序 定义:插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中, 阅读全文
posted @ 2019-05-18 15:36 追风的小蚂蚁 阅读(288) 评论(0) 推荐(0)
摘要:选择排序: 表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。 选择排序(Selection-sort)是一种简单直观的排序算法。 阅读全文
posted @ 2019-05-18 11:29 追风的小蚂蚁 阅读(180) 评论(0) 推荐(0)
摘要:排序原理: 相邻两数两两比较,较大的放在数组最后例如:4,8,7,5,3,1,2 第一次循环:将最大的数字8放在数组最后第二次循环:将第二大的数字7放在数组最后第三次循环:................................................................ 阅读全文
posted @ 2019-05-18 10:48 追风的小蚂蚁 阅读(148) 评论(0) 推荐(0)
摘要:快速排序的思想: 在整个数列中,选取一个特征点,一般以数列的中心为该特征点,使其小于特征点的数放在特征点的左侧,大于特征点的数放在右侧。 (1)若特征点最左侧的数小于特征点,而特征点最右侧的数大于特征点,则左侧数右移一位,或右侧色数左移一位 (2)若此时左侧的数值大于特征点,而右侧的数字小于特征点, 阅读全文
posted @ 2019-04-05 10:11 追风的小蚂蚁 阅读(177) 评论(0) 推荐(0)
摘要:冒泡排序原理 从第一个元素开始,与后面的元素一一比较,若第一个元素大于后面的元素,则位置互调,直到比较到最后的元素,此时该第一个元素应为最小的元素。之后,从第二个元素与后面的元素一一比较,若小于后者则位置互调,直到倒数第二个元素和第一个元素相比较,此时,该数列为递增数列。 阅读全文
posted @ 2019-04-04 19:27 追风的小蚂蚁 阅读(184) 评论(0) 推荐(0)
摘要:什么是希尔排序? 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。 希尔排序原 阅读全文
posted @ 2019-04-04 15:03 追风的小蚂蚁 阅读(161) 评论(0) 推荐(0)