数据结构与算法
文章平均质量分 93
NEUChords
好多东西要学习和总结啊~~~无止境无止境
展开
-
七大排序算法简介与C++实现
七大排序算法简介与C++实现1.冒泡排序2.选择排序3.插入排序4.希尔排序5.堆排序6.归并排序7.快速排序1.冒泡排序冒泡排序的基本思想:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元...原创 2019-05-22 20:10:43 · 357 阅读 · 0 评论 -
剑指offer面试题练习 -二叉树的下一个结点
剑指offer面试题练习 -二叉树的下一个结点1.题目描述2.解题思路3.代码实现1.题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。2.解题思路首先判断是否为空树,为空树则返回空指针。判断结点是否有右子树。有右子树,则在该右子树中遍历左子树,直至左子树为空,则返回上一结点即可。无右子树,...原创 2019-05-30 10:31:38 · 143 阅读 · 0 评论 -
剑指offer面试题练习 - 重建二叉树
剑指offer面试题练习 - 重建二叉树题目描述解题思路代码实现题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路首先依据前序遍历确定根结点。然后再中序遍历中找到该节点。则该节点左边为...原创 2019-05-29 17:46:54 · 160 阅读 · 0 评论 -
链表及其C++实现
链表总结及其C++实现链表简介单链表双链表链表实现单链表实现双链表的实现链表简介链表和数组一样也是一种线性数据结构。链表一般以链式存储结构实现,适合需要频繁增删数据的需求,但是不支持随机访问。链表一般包括单链表和双链表,单链表和双链表的实现一般使用虚拟头结点的形式可以简化实现细节。在C++ STL标准库中,<list>头文件实现的为双链表,<forward_list&g...原创 2019-10-04 16:49:42 · 512 阅读 · 0 评论 -
栈与队列及其C++实现
栈与队列总结及其C++实现栈及队列简介栈队列栈及队列的实现栈的实现队列的实现栈及队列简介栈栈是一种后进先出的数据结构即LIFO。通常,插入操作在栈中被称作入栈,在栈的末尾添加一个新元素。删除操作被称作出栈,删除操作也发生在栈的末尾。即对于栈来说插入和删除操作均发生在栈的同一端。如下图,在LIFO数据结构中,将首先处理添加到队列中的最新元素。在C++ STL标准库中 <stack...原创 2019-10-04 17:15:32 · 1266 阅读 · 0 评论 -
二分查找法及二分搜索树及其C++实现
二分查找法及二分搜索树总结及其C++实现二分查找法二分查找简介二分查找的实现二分搜索树二分搜索树简介二分搜索树的实现二分查找法二分查找简介二分查找是一种在每次比较之后将查找空间一分为二的算法。每次需要查找集合中的索引或元素时,都应该考虑二分查找。如果集合是无序的,我们可以总是在应用二分查找之前先对其进行排序。二分查找一般由三个主要部分组成:预处理:如果集合未排序,则进行排序。二分查找...原创 2019-10-05 20:07:05 · 3022 阅读 · 0 评论 -
堆及其C++实现
堆及其C++实现堆简介堆的实现堆简介堆其实是优先队列的一种实现形式。普通的队列是先进先出,而优先队列的出队顺序和入队顺序无关,而和优先级有关。堆作为优先队列的实现形式,其入队时间复杂度和出队时间复杂度均为O(log(n))。因此优先队列经常使用堆实现。常见的堆有二叉堆、d叉堆、索引堆、二项堆,斐波那契堆等。堆的实现二叉堆是一种常见的堆,也便于理解,本文实现的堆即是二叉堆。二叉堆是一棵完...原创 2019-10-07 19:56:21 · 569 阅读 · 0 评论