【数据结构】
文章平均质量分 92
小呀小二笙
斯人若彩虹,遇上方知有~~~
展开
-
简单易懂排序算法(一)【冒泡排序】
冒泡排序:一种交换排序,基本思想是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止1.容易理解的代码:void BubbleSort(vector<int>& vec){ int n = vec.size(); for (int i = 0; i < n - 1; ++i) { for (int j = i + 1; j &原创 2019-01-06 15:04:07 · 37123 阅读 · 13 评论 -
二叉树的遍历(递归与非递归、层次)
递归遍历1.先序遍历:根、左、右void Preorder(TreeNode* root) { if (root) { pre_ans.push_back(root->val); if (root->left) Preorder(root->left); if (root->right) Preorder(root-&g...原创 2019-05-11 15:32:31 · 190 阅读 · 0 评论 -
【剑指offer】翻转单词顺序列
题目描述牛客最近来了一个新员工FishFishFish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事CatCatCat对FishFishFish写的内容颇感兴趣,有一天他向FishFishFish借来翻看,但却读不懂它的意思。例如,“student.student.student. aaa amamam III”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“II...原创 2019-04-07 15:53:57 · 104 阅读 · 0 评论 -
简单易懂排序算法【总结】
相关概念稳定:如果aaa原本在bbb前面,而a=ba=ba=b,排序之后aaa仍然在bbb的前面。不稳定:如果a原本在ba原本在ba原本在b的前面,而a=ba=ba=b,排序之后 a 可能会出现在 bbb 的后面。时间复杂度:对排序数据的总的操作次数。反映当nnn变化时,操作次数呈现什么规律。空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模nnn的函数。排序分类...原创 2019-01-10 11:31:50 · 336 阅读 · 0 评论 -
简单易懂排序算法(七)【快速排序】
快速排序:基本思想是通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的...原创 2019-01-09 23:48:49 · 545 阅读 · 0 评论 -
数据结构快速提升(三)----队列【C++实现】
概述原创 2019-01-14 20:44:59 · 206 阅读 · 0 评论 -
数据结构快速提升(二)----栈【C++实现】
以下完整代码GithubGithubGithub,欢迎大家forkforkfork,starstarstar概述栈是限定仅在表尾进行插入和删除操作的线性表栈顶(toptoptop): 允许插入与删除的一端栈底(bottombottombottom): 另一端栈的特点:后进先出的线性表,简称LIFOLIFOLIFO结构栈也是一种线性表,因此其存储结构也可分为顺序存储结构与链式存储...原创 2019-01-13 20:01:18 · 212 阅读 · 0 评论 -
简单易懂排序算法(六)【归并排序】
文章目录1. 递归版本1.1 复杂度分析2. 非递归版本2.1 复杂度分析“归并”一词中文含义就是合并、并入的意思,而在数据结构中的定义是将两个以上的有序表组组合成一个有序表组归并排序:就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后进行两两归并,得到[n2\frac {n}{2}2n]个长度为2或1的有序子序列;...原创 2019-01-08 00:22:17 · 354 阅读 · 0 评论 -
数据结构快速提升(一)----线性表【C++实现】
概述线性表是最常用且最简单的一种数据结构。简言之,一个线性表是nnn个数据元素的有限序列线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同的特性线性表的是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,还可进行插入和删除线性表的特点:插入方便 (优点)空间利用率低插入、删除麻烦线性表的顺序表示线性表的顺序表...原创 2019-01-12 19:35:51 · 1382 阅读 · 5 评论 -
简单易懂排序算法(五)【堆排序】
堆在分析堆排序之前首先对堆的概念进行一个简单的回顾,理解了堆的概念对于堆排序会有更好的理解堆是具有下列性质的完全二叉树原创 2019-01-07 10:36:21 · 8594 阅读 · 6 评论 -
简单易懂排序算法(四)【希尔排序】
希尔排序是D.L.Shell于1959年提出来的一种排序算法,在这之前排序算法的时间复杂度基本都是O(n^2)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。希尔排序:是对直接插入排序进行的一种改进排序算法,采用跳跃分割的方法,将整个待排序列分割成若干个子序列,对这些子序列进行直接插入排序,使其得到的结果基本有序,然后再不断缩减分割的区间,使其完全有序基本有序:就是小的关键字基本在前面...原创 2019-01-06 21:18:35 · 927 阅读 · 1 评论 -
简单易懂排序算法(三)【直接插入排序】
直接插入排序:基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。根据此思想我们可以写出如下代码:void InsertSort(vector<int>& vec){ int n = vec.size(); int i, j, tmp; for (i = 1; i < vec.size(); ++i) { tmp = v...原创 2019-01-06 20:15:13 · 589 阅读 · 1 评论 -
简单易懂排序算法(二)【简单选择排序】
简单选择排序:就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<= i <= n)个记录交换换而言之,即每次选出一个关键字最小的放在未排序的序列的首部来看代码:void SelectSort(vector<int>& vec){ int n = vec.size();原创 2019-01-06 16:53:54 · 1248 阅读 · 0 评论 -
哈希表心得
出自陈皓博客《哈希表心得》,链接:http://blog.csdn.net/haoel/article/details/2863我们知道,哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果KeyKeyKey一样,则在一起,如果KeyKeyKey不一样,则不在一起。哈希表的查询是飞快的。因为它不需要从头搜索,它利用KeyKeyKey的“哈希算法”直接定位,查找非...转载 2019-05-11 16:36:56 · 1461 阅读 · 0 评论