algorithm
文章平均质量分 55
工科扫地僧
这个作者很懒,什么都没留下…
展开
-
算法、程序设计的注意事项
一、定义变量,得明确每个变量的意义,在实现程序逻辑时,得维护好变量二、实现函数,实现某个程序逻辑时,应该想到这个程序的前提条件,例如:检查大小是否越界、递归是否有终点、递归是否有返回三、处理好边界问题,适当用注释写出来,会方便很多四、循环不变量、在循环的时候、改变变量的值,但是不改变变量的含义五、小数据量的测试,验证程序的正确性,这个小数据量可以包含很多种情形,数据为空,边界等等...原创 2019-11-10 11:57:42 · 1890 阅读 · 0 评论 -
C++实现排序算法的总结
一、选择排序二、插入排序三、归并排序四、快速排序五、堆排序六、索引最大堆七、冒泡排序插入排序,在已经有序的元素中排序,则时间复杂度可以达到O(n),所以每个排序,面对不同的数据,可能会有不一样的时间复杂度,我们能够给出的就是,平均时间复杂度总体而言,快速相对来说是比较快的排序算法原地排序:直接可以在数组上完成排序,不需要再另外开辟空间,所以一些系统对空间...原创 2019-10-06 16:14:57 · 330 阅读 · 0 评论 -
桶排序
桶排序的基本思想是假设数据在[min,max]之间均匀分布,其中min、max分别指数据中的最小值和最大值。那么将区间[min,max]等分成n份,这n个区间便称为n个桶。将数据加入对应的桶中,然后每个桶内单独排序。由于桶之间有大小关系,因此可以从大到小(或从小到大)将桶中元素放入到数组中。桶数: (max - min) / array.length的结果为数组大小的倍数(最大倍数),以倍数作为桶数【注意1】当序列大小vec.size()比较小,而元素值很大且分散(max - min比较大),会造成原创 2020-05-30 20:13:47 · 219 阅读 · 0 评论 -
红黑树总结
当在10亿数据中只需要进行10几次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感红黑树是一种含有红黑结点并能自平衡的二叉查找树红黑树总是通过旋转(左旋和右旋)和变色达到自平衡性质:https://www.jianshu.com/p/e136ec79235c2-3树3节点的树,左边节点表示小于b,中间节点表示在b,c之间,右边节点表示大于c节点2-3树的插入永远不会添加到一个空节点上,如图,如果插入到三个节点了,则会分开成为一个绝对平...原创 2020-05-25 19:48:54 · 211 阅读 · 0 评论 -
希尔排序
https://www.cnblogs.com/90zeng/p/shell_sort.htmlhttps://blog.csdn.net/wyl1813240346/article/details/81904878#include<iostream>using namespace std;template<typename T>void shellSor...原创 2020-05-07 09:52:13 · 150 阅读 · 0 评论 -
KMP算法
参考链接:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html转载 2020-03-07 23:13:10 · 149 阅读 · 0 评论 -
C++读图txt文件,并将数据结构 图显示出来
目录整个代码展示下面分别是图的两个txt文件,现在用C++读取这个文件,并将图显示出来第一行分别表示图的节点数和边数13 130 54 30 19 126 45 40 211 129 100 67 89 115 36 80 10 20 51 21 31 43 43 5代码中模板Graph,可以是稀疏图或者稠密的实现,参考...原创 2019-11-18 11:38:40 · 1618 阅读 · 0 评论 -
图
目录基础:邻接矩阵,邻接表表示图的基本实现邻接表,邻接矩阵的迭代器类的实现稀疏图和稠密图的深度优先遍历图的深度优先遍历,得出图的路径广度优先遍历,使用队列的数据结构,可实现查找图的最短路径整套代码测试代码基础:无向图是一种特殊的有向图简单图,一般不包括自环边,平行边用邻接矩阵、邻接表表示图,前一个可能更加适用于稠密图,后一个更加适用...原创 2019-11-15 10:05:05 · 387 阅读 · 0 评论 -
并查集 Union Find
并查集是一种不一样的数据结构,主要解决查找集合中元素之间是否连接原创 2019-11-11 15:00:00 · 218 阅读 · 1 评论 -
面试中的复杂度分析
一、O(f(n)) n代表的数据规模,其中f(n)代表程序块的运行次数,与程序块的运行次数成正比二、O(f(n)) 表示的是一个算法的平均复杂度,适用于不同数据规模,相当于,f(n)类似于多项式,满足n从1,2,3......依次增加三、具体的复杂度,会跟数据用例有关,比如插入排序如果在有序有序用例情况下,复杂度会变成0(n)级别当n<=1000时,O...原创 2019-10-28 23:49:34 · 233 阅读 · 0 评论 -
数据类型、数据结构、算法
数据类型就是对数据的抽象描述基本的内置类型加上类型说明符,组成多种数据类型数据结构一般是说计算机存储和组织数据的方式,还有就是相互之间存在一种或多种特定关系的数据元素的集合,简单来说就是数据的逻辑或物理存储方式数据结构,分为线性数据结构、非线性数据结构线性数据结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系,包括数组、链表、栈、队列非线性数据结构...原创 2019-10-26 17:17:41 · 248 阅读 · 0 评论 -
算法刷题-数组中问题其实最常见
下图的这些算法都是可以在数组中完成的,一个简简单单的数据,可以实现这些复杂的数据结构,依靠的是数据结构中的逻辑,原创 2019-10-23 21:43:08 · 178 阅读 · 0 评论 -
二分搜索树
二叉搜索树解决查找这类问题二分查找法:对于有序的数列,才能使用二分查找法。二分查找法的时间复杂度:此时将时间复杂度称为,logN,如果数据规模N以2倍的速度增加,时间增加会越来越慢,类似于log函数性质,可以利用下面的公式推导//--------------------二分查找法-------------------------//在大小为n的T类型的有序数组...原创 2019-10-22 11:11:42 · 256 阅读 · 0 评论 -
(哈希表)散列表
hash就是找到一种数据内容和数据存放地址之间的映射关系Hash Table的查询速度非常的快,几乎是O(1)的时间复杂度参考链接:https://blog.csdn.net/yyyljw/article/details/80903391...原创 2019-10-12 14:36:20 · 137 阅读 · 0 评论 -
选择排序
选择排序作为基础的排序算法,它的时间复杂度是O(n^2)级别的特性:1、在任何时候不管什么有序无序序列,它都要经过两次for循环2、不会相等的值之间的原有的顺序3、是原地算法一、选择排序算法的整型数组的基本实现#include<iostream>using namespace std;void SelectionSort(int arr[],int n)...原创 2019-08-27 11:09:52 · 1653 阅读 · 0 评论 -
插入排序
时间复杂度,O(N^2)思想:每次跟前面排好的序列挨个比较大小,如果非合适位置,将这个元素向后移一位,找到合适的位置,替换掉特性:1、插入排序可以提前终止内部循环,在序列近乎有序的情况下,时间复杂度可能够达到O(n)级别2、不会相等的值之间的原有的顺序3、是原地算法一、挨个交换template <typename T>void InsertSort(T ...原创 2019-08-28 14:45:07 · 257 阅读 · 0 评论 -
归并排序
时间复杂度:O(nlog n)特性:1、需要开辟额外空间自顶向下的归并排序#include<iostream>//—————————————————————归并排序————————————————————///将arr[l...mid]和arr[mid + 1...r]两部分进行归并template <typename T>void __merge...原创 2019-09-07 20:32:01 · 164 阅读 · 0 评论 -
快速排序
特性:时间复杂度O(n^2)归并排序和快速排序都采用了分治算法-、基础实现//————————————————————快速排序——————————————---—///对arr[L...R]部分进行parttition操作//返回给p,使得arr[L,...p-1]<arr[p];arr[p+1...r]>arr[p]template <typename...原创 2019-09-09 17:02:04 · 277 阅读 · 0 评论 -
最大堆排序
目录一、基础堆二、原地最大堆一、基础堆基础堆的搭建,将传入的数组数组元素放入一个新的数组,并操作成最大堆shift Down/shift Up函数,逐个插入元素,或者直接插入数组、终端中以树形结构方式的打印函数的实现template <typename Item>class MaxHeap{private: Item* data; //堆中已经...原创 2019-09-16 11:45:22 · 337 阅读 · 0 评论 -
索引最大堆
索引堆的核心思想,根据data数组改变index 数组,比较的是data的数据,而交换的数据是index数据#pragma once//---------------------------------------索引最大堆的搭建----------------------------------------------//索引堆的核心思想,根据data数组改变index.........原创 2019-10-07 17:05:52 · 249 阅读 · 0 评论 -
冒泡排序
https://blog.csdn.net/yangchuang93/article/details/80858054https://www.jianshu.com/p/88759596c944原创 2019-10-08 20:08:15 · 160 阅读 · 0 评论 -
python算法 图遍历 DFS BFS
图结构: 非常强大的结构化思维(或数学)模型。如果您能用图的处理方式来规范化某个问题,即使这个问题本身看上去并不像个图问题,也能使您离解决问题更进一步。 在众多图算法中,我们常会用到一种非常实用的思维模型--遍历(traversal):对图中所有节点的探索及访问操作。图的一些相关概念: 简单图(Simple graph):无环并且无平行边的图. 路(path):内...原创 2019-03-19 09:31:43 · 2741 阅读 · 0 评论