![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
啊哈算法
Gerald Kwok
低到尘埃里,才能开出花来。
展开
-
算法---简易的桶排序法
算法学习排序方法最快最简单的排序---桶排序法 无论是从小到大还是从大到小都可以用到桶排序法 该算法就好像是下面放着N个桶(N为赋值的范围),先定义数组book[N],给数组book所有的值赋0。然后用循环的方法对数组赋值(赋值时注意要小于N),定义一个变量,用户给数组book赋值时,令book[t]++。然后根据需求,从小到大或从大到小的输出这些值...原创 2018-09-19 18:25:10 · 188 阅读 · 0 评论 -
七大经典排序
七大经典排序插入排序插入排序开始先把第一个数字作为一个有序子数组,然后从第二个数字开始。既然前面是一个有序的数组,那么当前这个数组只要逐个跟前面的有序子数组比较就行。如果当前数字比前面的数字小,就把前面的数字往后挪一个位置。直到当前的数字比比较的数字( 下标为:j )大为止,把当前数字填入到 j + 1 的位置。即可表示当前数字插入成功。// 插入排序//// 时间复杂度// ...原创 2019-06-12 15:23:32 · 200 阅读 · 0 评论 -
二叉搜索树你懂了吗?
二叉搜索树你懂了吗?什么是二叉搜索树?二叉搜索树就是当我们需要对一组非常庞大的数字进行搜索时,什么样的数据结构才能让我们用尽量少的时间来搜索到我们想要找的数字呢?(当然也可以是其他数据类型,这里我用数字来举例)这个时候我们想到了树型结构,可是树型结构也得需要一定的规律插入才能达到我们想要的效果呀。这个时候就诞生了二叉搜索树。二叉搜索树规定,第一个插入的是头结点,后来插入的值如果比当前结点的...原创 2019-05-30 19:28:25 · 209 阅读 · 0 评论 -
在有序链表中插入结点,仍保持其有序性
如果在一个有序数组中,你想插入一个数据,还需要把其后所有元素往后移一位。 那么有没有一个比较好的数据结构可以实现简单便捷的插入操作呢? 那就是链表,链表由两个部分组成,前面的部分为数据部分,用来存储数据,后面的部分为指针部分,用来指向下一个结点,链表的数据结构就很好地解决了插入麻烦的问题。(本文只介绍尾插法)只需要让前一个结点的指针指向要插入的数据,让插入的数据的指针,...原创 2018-09-30 10:52:18 · 8624 阅读 · 3 评论 -
堆排序
堆排序1. 最小堆排序描述: 堆是什么?是一种特殊的完全二叉树。如图: 如上图所示的所有的父结点都比子结点小,这种堆叫做最小堆。 那么怎么利用堆来进行排序呢?思路 首先我们用一个一维数组来储存堆的数字; 然后将堆顶的数字向下调整,调整到符合最小堆的特征为止;例如: 这样一个堆,我们随便输入的数字,然后对堆顶23进行向下调整,得到: ...原创 2018-10-31 20:31:18 · 165 阅读 · 0 评论 -
求图的最短路径---四中算法优化
最短路径的四种算法!目录1、Floyd-Warshall算法 --- 只有五行的算法2、Dijkstra算法 --- 通过边实现松弛3、Bellman-Ford --- 解决负权边4、Bellman-Ford的队列优化1、Floyd-Warshall算法 --- 只有五行的算法 描述:在上面的图中,有四个顶点八条边,边有长有短,我们需要求任意两个顶点之间...原创 2018-10-26 17:37:49 · 6094 阅读 · 0 评论 -
无向图的广度优先遍历
描述 前一篇博客讲了无向图的深度优先遍历 使用广度优先遍历前一篇博客的图结果如下 这五个顶点的被访问顺序如下思路 首先以一个未被访问过的顶点作为起始项点,访问其所有相邻的顶点,然后对每个相邻的顶点,在访问它们相邻的未被访问过得顶点,直到所有顶点都被访问过,遍历结束 例如对上图的遍历过程 从顶点 1 开始,依次访问 1 相邻的...原创 2018-10-17 18:52:38 · 13544 阅读 · 0 评论 -
无向图的深度优先遍历
描述 简单介绍一下图,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的。例如下图的由五个顶点(编号1、2、3、4、5)和五条边(1-2、1-3、1-5、2-4、3-5)组成 现在从1号顶点开始遍历这个图,遍历是指把图的每一个顶点都访问一次。使用深度有限搜索来遍历这个图将会得到如下结果。 这五个顶点的访问顺序如下图 使用深度优先...原创 2018-10-17 18:44:55 · 43787 阅读 · 5 评论 -
分别用广度优先搜索和深度优先搜索解决到迷宫中的一点的最短距离
描述: 迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物。迷宫中有一点,找出一条最短的路径,并输出最短路径所需要的步数。代码: 深度优先搜索: 一步一步去尝试,规定顺序为右、下、左、上,尝试所有的可能性。最后算出最短路径。#define _CRT_SECURE_NO_WARNINGS 1#include &l...原创 2018-10-09 17:23:05 · 1177 阅读 · 1 评论 -
算法 -- 纸牌游戏_小猫钓鱼
星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人...原创 2018-09-29 19:38:49 · 1253 阅读 · 0 评论 -
火柴棍等式
描述给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:注意:1. 加号与等号各自需要两根火柴棍2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)3. n根火柴棍必须全部用上现在只有m(m<=24)根火柴,可以拼多少个等式?思...原创 2018-10-08 16:38:15 · 2194 阅读 · 2 评论 -
水管工游戏
描述: 游戏的大致规则是这样的。一块矩形土地被分为N*M的单位正方形,现在这块土地上已经埋设有一些水管,水管将从坐标为(1,1)左上角左部边缘,延伸到(N,M)右下角右部边缘。水管只有2种,如下图所示。 每种管道将占据一个单位正方形土地。你现在可以旋转这些管道,使得构成一个管道系统,即创造一条从(1,1)到(N,M)的连通管道。标有树木的方格表示这里没有管道。 我们可以...原创 2018-10-13 17:01:20 · 550 阅读 · 0 评论 -
算法 --- 队列
算法学习栈、队列、链表解密QQ号 -- 队列 先对队列来一个定义:队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,这称为“出队”,而在队列的尾部(tail)进行插入操作,这称为“入队”。当队列中没有元素时(即 head == tail),这称为空队列。 队列遵守“先进先出”原则! 举个例子! 当你问一个女生要QQ号的时候,那个女生并不...原创 2018-09-26 21:21:28 · 494 阅读 · 0 评论 -
算法 --- 快速排序
算法学习排序方法最常用的排序 -- 快速排序 虽然冒泡排序可以解决桶排序浪费空间的问题,但是算法的执行效率上牺牲了很多。 那么有没有既可以快速又不浪费空间的排序算法呢? 那就是快速排序了!!!!!! 例如: 6 8 5 1 3 5 1 9 8 这一串数字,我们先把6作为基准数,然后定义两个变量 left 和 right,分别在这串数字的最左边和最右边,先让右...原创 2018-09-26 21:06:42 · 77 阅读 · 0 评论 -
模拟链表
在我的上一篇博客中,我们用到了有序链表。但是有些人,就会说,我目前还看不懂指针,就是不知道指针该怎么使用,那么我在《啊哈!算法》中学到了另一个方法,就是模拟链表。 在该方法中,我们将会定义两个数组,一个为data,另一个为right。 data数组用来存放真正的元素或数字,right数组用来存放data数组中每一个数的右边是谁(此处的意义跟链表中Next指针一样)。 那...原创 2018-10-01 11:28:48 · 418 阅读 · 0 评论 -
算法---冒泡排序
算法学习排序方法邻居好说话---冒泡排序 冒泡排序的基本思想:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 例如:有五个数字,9, 21,10, 17,11 。比较前两个,发现9比21小,程序将9与21换位置,以此类推,9将会到最后一个位置,这个过程就像冒泡一样,因此这个方法为冒泡排序。 冒泡排序的原理是,每一遍只将一个数字放到它将...原创 2018-09-19 22:07:28 · 110 阅读 · 0 评论 -
那么AVL树呢?
那么AVL树呢?原创 2019-06-03 16:43:18 · 355 阅读 · 0 评论