
数据结构
常见的数据结构总结
Surplus°
If not me, then who? If not now, then when?
展开
-
常见排序算法之归并排序原理及递归非递归版本代码
归并排序主要思想是分治,先将要排序的元素分成两个子集,先将这两个子集排列成有序,然后将这两个有序的序列归并为一个有序的序列。原创 2020-10-20 21:24:13 · 382 阅读 · 0 评论 -
常见排序算法之快速排序原理及递归非递归版本代码
目录快速排序原理复杂度分析选择排序代码1.递归版本2.非递归版本测试及结果测试结果快速排序原理之前介绍过三种基础的排序算法以及它们之间的比较:冒泡排序,选择排序和直接插入排序,我们知道它们的时间复杂度都是O(n2),那是不是所有的算法的时间复杂度都是O(n2)呢?当然不是!下面我们介绍的快速排序之所以叫快速排序就是因为目前已有的排序算法中,快速排序的时间复杂度是最小的。快速排序的基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,则可以分别对这两部分记录继续进行排原创 2020-10-19 20:11:08 · 694 阅读 · 0 评论 -
由二叉树的前序遍历和中序遍历得到叶子节点的个数--字节跳动原题
由二叉树的前序遍历和中序遍历得到叶子节点的个数题目第一行输入节点数量,第二行输入二叉树前序遍历的结果,第三行输入二叉树中序遍历的结果,要求输出叶子节点的数量输入31 2 32 1 3输出2思路分析可以先由二叉树的前序遍历和中序遍历构建出一棵二叉树,然后在遍历二叉树得到叶子节点的数量!源码#include <fstream>#include <iostream>#include <algorithm>#include <vector&原创 2020-08-22 21:16:11 · 762 阅读 · 0 评论 -
常见排序算法之直接插入排序及三种基础算法对比
目录直接插入排序算法思想时间复杂度直接插入排序代码直接插入排序测试结果直接插入排序与冒泡排序、选择排序对比测试代码对比结果完整代码mysort.hmysort.cppprint_data.hprint_data.cppmain.cpp直接插入排序直接插入排序和冒泡排序、选择排序是3种基础排序算法。前面已经介绍了冒泡排序以及选择排序,下面介绍一下直接插入排序。3种排序方式的时间复杂度都是O(n2),但是直接插入排序相比前两种排序方式性能更好,直接插入排序更加适合于已经基本有序和数据量较少的情况。插入排序的原创 2020-08-04 15:03:40 · 851 阅读 · 0 评论 -
常见排序算法之选择排序及算法对比
目录选择排序算法思想时间复杂度选择排序代码选择排序测试结果选择排序与冒泡排序对比测试代码对比结果完整代码mysort.hmysort.cppprint_data.hprint_data.cppmain.cpp之前已经写过一篇关于冒泡排序及其改进的文章,参考博客。现在介绍一下简单选择排序。选择排序算法思想选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。相比于冒泡排序,交换的次数更少,性能优于冒泡排序。时间复杂度最坏时原创 2020-08-04 11:20:13 · 494 阅读 · 0 评论 -
常见排序算法之冒泡排序及其改进
目录冒泡排序算法思想时间复杂度经典冒泡排序代码测试结果冒泡排序算法的改进代码测试结果改进算法与经典算法的比较测试结果完整代码mysort.hmysort.cppprint_data.hprint_data.cppmain.cpp冒泡排序冒泡排序(BubbleSort)以其“在排序过程中相邻元素不断交换,一些元素慢慢被换到最后,看起来就像是元素在冒泡一样”而得名,是一种简单的基于关键词比较的排序算法。算法思想假设有n个数据,依次比较相邻两个元素,如果反序则交换位置,直到没有反序为止。以递增序为例,每原创 2020-08-04 09:35:55 · 2296 阅读 · 0 评论 -
大话数据结构之串
目录数据结构之串Todo数据结构之串Todo原创 2020-07-30 08:45:37 · 212 阅读 · 0 评论 -
大话数据结构之栈与队列
目录数据结构之栈与队列todo数据结构之栈与队列todo原创 2020-07-30 08:48:09 · 123 阅读 · 0 评论 -
大话数据结构之线性表--链式存储结构单链表的c++实现
目录数据结构之链表数据结构之链表原创 2020-07-30 08:43:58 · 712 阅读 · 0 评论