![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 58
joshua317
简单而快乐!Talk is cheap, Show me the code!
展开
-
算法-经典趣题-舍罕王赏麦
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-舍罕王赏麦 - joshua317的博客一、问题舍罕王赏麦问题是古印度非常著名的一个级数求和问题。传说国际象棋的发明者是古印度的西萨·班·达依尔。那时的国王是舍罕,世人称为舍罕王。当时舍罕王比较贪玩,位居宰相的西萨·班·达依尔便发明了国际象棋献给舍罕王。舍罕王非常喜欢,为了奖励西萨·班·达依尔,便许诺可以满足他提出的任何要求。西萨·班·达依尔灵机一动,指着8×8=64的棋盘说:“陛下,请您按棋盘的格子.原创 2021-10-19 14:07:32 · 2019 阅读 · 0 评论 -
算法-经典趣题-三色旗
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-三色旗 - joshua317的博客一、问题三色旗的问题最早由E.W.Dijkstra所提出,大致意思如下:有一条绳子上面挂有白、红、蓝三种颜色的多面旗子,这些旗子的排列是无序的。现在要将绳子上的旗子按蓝、白、红三种颜色进行归类排列,但是只能在绳子上进行旗子的移动,并且每次只能调换两个旗子。问如何采用最少的步骤来完成三色旗的排列呢?二、分析我们来分析一下三色旗问题。假设绳子上共有10面旗子,蓝色旗.原创 2021-10-14 18:37:38 · 838 阅读 · 0 评论 -
算法-经典趣题-新郎和新娘
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-新郎和新娘 - joshua317的博客一、问题新郎和新娘问题是非常典型的智力推理问题。新郎和新娘问题的大意如下:有三对新郎和新娘参加集体婚礼,三个新郞为A、B、C,三个新娘为X、Y、Z。主持婚礼的人一时间忘了谁应该和谁结婚。于是,他便问参加婚礼的6个人中的三个,得到的回答如下:新郎A说他将和新娘X结婚;新娘X说她将和新郎C结婚;新郎C说她将和新娘Z结婚。聪明的主持人知道他们在与他开玩.原创 2021-10-08 22:41:56 · 646 阅读 · 0 评论 -
数据结构和算法-数学问题-最大公约数
本文为joshua317原创文章,转载请注明:转载自joshua317博客数据结构和算法-数学问题-最大公约数 - joshua317的博客一、最大公约数说明最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。比如,只能说8是某数的倍数,2是某数的约数,而不能孤立地说8是倍数,2是约数。几个自然数公有的约数,叫做这几个自然数的公约数。其中最.原创 2021-09-22 20:19:42 · 3214 阅读 · 0 评论 -
数据结构和算法-线性查找-二分查找
本文为joshua317原创文章,转载请注明:转载自joshua317博客数据结构和算法-线性查找-二分查找 - joshua317的博客一、二分查找简述折半查找(Binary Search)又称为二分查找,其要求数据序列呈线性结构,也就是经过排序的数据序列。对于没有经过排序的数据序列,可以先进行排序操作,然后执行折半查找操作。它是一种效率较高的查找方法。但二分查找有一定的条件限制:要求线性表必须采用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)。二、二分查找分析折半查找的基本.原创 2021-09-18 12:20:18 · 426 阅读 · 0 评论 -
如何区分数据结构中的线性结构与非线性结构?
本文为joshua317原创文章,转载请注明:转载自joshua317博客如何区分数据结构中的线性结构与非线性结构? - joshua317的博客数据结构可以分成两大类:线性结构 非线性结构下面就来简单聊聊这两种结构,至于具体的数据结构,后续咱们慢慢聊。线性结构先来说线性结构,怎么理解呢?线性结构的元素之间是一个接着一个连接,构成线性的形式。比如数组、链表、栈、队列等。对于数组,元素依次顺序存放,紧挨着,是一种顺序存储方式。 对于链表,元素之间离散存储,通过指针彼此相连,是一种链.原创 2021-09-17 01:23:34 · 2636 阅读 · 0 评论 -
基本数据结构和算法
本文为joshua317原创文章,转载请注明:转载自joshua317博客基本数据结构和算法 - joshua317的博客基本数据结构和算法一、链表 链表 双向链表 二、哈希表/散列表 (Hash Table)散列函数 碰撞解决三、字符串算法排序 查找 BF算法 KMP算法 BM算法 正则表达式 数据压缩四、二叉树二叉树 二叉查找树 伸展树(splay tree 分裂树) 平衡二叉树AVL 红黑树 B树,B+,B* R树 Tr.原创 2021-09-17 01:22:59 · 117 阅读 · 0 评论 -
数据结构和算法-线性查找-顺序查找
本文为joshua317原创文章,转载请注明:转载自joshua317博客数据结构和算法-线性查找-顺序查找 - joshua317的博客一、顺序查找简述什么是顺序查找呢?顺序查找就是遍历整个数据列表,逐个元素与给定值比较,若某个元素和给定值相等,则查找成功。如果直到最后一个元素和给定值比较都不相等,则查找失败。在查找算法中,顺序查找相对比较简单,其执行的操作从数据序列中的第1个元素开始,从头到尾依次逐个查找,直到找到所要的数据或搜索完整个数据序列。顺序查找主要针对少量的、无规则的数据。对.原创 2021-09-17 01:22:21 · 355 阅读 · 0 评论 -
基本算法思想
本文为joshua317原创文章,转载请注明:转载自joshua317博客基本算法思想 - joshua317的博客对于我们开发者来说,学习一门程序语言比较容易,难的是如何编写一个高质量的程序。算法可以说是程序的灵魂,一个好的算法往往可以化繁为简、高效率地求解问题。因此,开发者应该重点掌握各种算法思路,并在学习和工作中不断总结算法经验。在实际应用中,不同的问题往往有不同的解题思路。如果找不到一个合适的思路,那么可能使求解过程变得复杂,更有甚者无法求解得到结果。选择合理的思路,往往可以帮助用户理清问.原创 2021-09-15 10:11:49 · 257 阅读 · 0 评论 -
算法-经典趣题-窃贼问题
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-窃贼问题 - joshua317的博客一、问题窃贼问题是一个典型的最优解的问题。窃贼问题的大意如下:有一个窃贼带着一个背包去偷东西,房屋中共有5件物品,其重量和价值如下。物品1:6公斤,48元。物品2:5公斤,40元。物品3:2公斤,12元。物品4:1公斤,8元。物品5:1公斤,7元。窃贼希望能够拿最大价值的东西,而窃贼的背包最多可装重量为8公斤的物品。那么窃贼应该装下列哪些物品才.原创 2021-09-15 10:09:47 · 1187 阅读 · 0 评论 -
算法-经典趣题-马踏棋盘(又称骑士周游)
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-马踏棋盘(又称骑士周游) - joshua317的博客一、问题马踏棋盘问题,又称骑士漫步、,它是一个非常有趣的智力问题。马踏棋盘问题的大意如下:国际象棋的棋盘有8行8列共64个单元格,无论将马放于棋盘的哪个单元格,都可让马踏遍棋盘的每个单元格。问马应该怎么走才可以踏遍棋盘的每个单元格?二、分析我们来分析一下马踏棋盘问题。在国际象棋中,马只能走“日”字形,但是马位于不同的位置其可以走的方向有.原创 2021-09-14 08:59:17 · 1937 阅读 · 0 评论 -
算法-经典趣题-寻找假银币
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-寻找假银币 - joshua317的博客一、问题寻找假银币是一个非常有趣的智力题目,寻找假银币的大意如下:现在有8枚银币,其中有一枚是假币。但是,从外观和做工上无法分辨哪枚是真币哪枚是假币,只知道假币的重量要比真币稍轻。则要求仅使用一个天平,如何以最少的步骤寻找到假银币?二、分析我们来分析下寻找假银币问题。其实寻找假银币并不难,一种最基本的方法便是首先给硬币编上序号(1~8),然后通过天平进行两两比较.原创 2021-09-13 13:48:15 · 752 阅读 · 0 评论 -
算法-经典趣题-青蛙过河
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-青蛙过河 - joshua317的博客一、问题青蛙过河是一个非常有趣的智力游戏,其大意如下:一条河之间有若干石块间隔,有两队青蛙在过河,每队有3只青蛙,如图所示。这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动。在移动过程中,青蛙可以向前面的空位中移动,不可一次跳过两个位置,但是可以跳过对方一只青蛙进入前面的一个空位。问两队青蛙该如何移动才能够用最少的步数分别走向对岸?二、分析.原创 2021-09-13 13:45:35 · 3953 阅读 · 1 评论 -
算法-经典趣题-爱因斯坦阶梯问题
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-爱因斯坦阶梯问题 - joshua317的博客一、问题爱因斯坦曾经提出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩下1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩下4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶。二、分析来分析一下爱因斯坦的阶梯问题。假设阶梯的个数为minNumber,按照前述的条件,minNu.原创 2021-09-12 00:10:25 · 2255 阅读 · 0 评论 -
算法-经典趣题-渔夫捕鱼
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-渔夫捕鱼 - joshua317的博客一、问题渔夫捕鱼问题是一个典型的递推问题,渔夫捕鱼问题的大意如下:某天晚上,A、B、C、D、E 5个渔夫合伙捕鱼,捕到一定数量之后便停止捕鱼,各自到岸边休息。第二天早晨,渔夫A第一个醒来,他将鱼分作5份,把多余的一条扔回河中,拿其中自己的一份回家去了。渔夫B第二个醒来,也将鱼分作5份,扔掉多余的一条,拿走自己的一份。渔夫C第三个醒来,也将鱼分作5份,扔掉多余的一条,拿.原创 2021-09-12 00:07:56 · 1700 阅读 · 1 评论 -
算法-经典趣题-三色球
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-三色球 - joshua317的博客一、问题三色球是一个排列组合问题,三色球问题的大意如下:一个黑盒中放着3个红球、3个黄球和6个绿球,如果从其中取出8个球,那么取出的球中有多种颜色搭配呢?二、分析先来分析一下三色球问题。这是一个经典的排列组合问题,每种球的可能性如下:取红球可以有4种可能:0个、1个、2个、3个;取黄球可以有4种可能:0个、1个、2个、3个;取绿球可以有6种可能:2个、3.原创 2021-09-12 00:03:17 · 2300 阅读 · 0 评论 -
算法-经典趣题-兔子产仔
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-兔子产仔 - joshua317的博客一、问题兔子产仔是一个非常古老而经典的问题,其与数论有关。兔子产仔问题最早记载于13世纪意大利数学家斐波那契的《算盘书》,其大意如下:如果一对两个月大的兔子以后每一个月都可以生一对小兔子,而一对新生的兔子出生两个月后才可以生小兔子。也就是说,1月份出生,3月份才可产仔。那么假定一年内没有发生兔子死亡事件,那么1年后共有多少对兔子呢?二、问题分析先来分析一下兔子产仔.原创 2021-09-12 00:01:35 · 738 阅读 · 0 评论 -
数据结构和算法-单向链表
本文为joshua317原创文章,转载请注明:转载自joshua317博客数据结构和算法-单向链表 - joshua317的博客数据结构和算法-单向链表链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不必须相邻,那么,怎么表示逻辑上的相邻关系呢?可以给每个元素附加一个指针域,指向下一个元素的存储位置。 如图:从上图中我们也可以直观看出,每个结点包含两个域:数据域和指针域,指针域存储下一个结点的地址,因此指针指向的类型也是结点类型。1. 链表的特点链表是一种非线性.原创 2021-09-10 10:21:07 · 501 阅读 · 0 评论 -
算法-经典趣题-百钱买百鸡
本文为joshua317原创文章,转载请注明:转载自joshua317博客算法-经典趣题-百钱买百鸡 - joshua317的博客一、问题百钱买百鸡是一个非常经典的不定方程问题,最早源于我国古代的《算经》,这是古代著名数学家张丘建首次提出的。百钱买百鸡问题的原文如下:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?这个问题的大致意思是公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,如果用100文钱买100只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?二、分.原创 2021-09-10 10:20:16 · 631 阅读 · 0 评论 -
算法-排序算法-快速排序
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://blog.joshua317.com/article/12算法-排序算法-快速排序/** * 排序算法-快速排序 * 快速排序(Quick Sort)算法和冒泡排序算法类似,都是基于交换排序思想的。快速排序算法对冒泡排序算法进行了改进,从而具有更高的执行效率。 * 快速排序算法通过多次比较和交换来实现排序,过程如下: * (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。 * (2)将大.原创 2021-09-03 08:50:29 · 66 阅读 · 0 评论 -
算法-排序算法-希尔排序
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://www.joshua317.com/article/11算法-排序算法-希尔排序/** * 排序算法-希尔排序 * 冒泡排序算法、选择排序算法和插入排序算法,虽然思路比较直观,但是排序的效率比较低。 * 对于大量的数据需要排序时,往往需要寻求其他更为高效的排序算法。Shell排序算法便是其中一种 * Shell排序算法严格来说基于插入排序的思想,其又称为希尔排序或者缩小增量排序,思路如下: * (.原创 2021-09-02 12:05:06 · 83 阅读 · 0 评论 -
算法-排序算法-插入排序
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://www.joshua317.com/article/10算法-排序算法-插入排序/** * 排序算法-插入排序 * 插入排序(Insertion Sort)算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。 * 插入排序算法的思路比较简单,应用比较多。 * 插入排序算法通过比较和插入来实现排序,其排序流程如下: * (1)首先对数组的前两个数据进行从小到大的排序。 * (2)接着将第.原创 2021-09-02 12:04:25 · 83 阅读 · 0 评论 -
算法-排序算法-选择排序
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://www.joshua317.com/article/9算法-排序算法-选择排序/** * 排序算法-选择排序 * 选择排序(Selection Sort)算法也是比较简单的排序算法,其思路比较直观。选择排序算法在每一步中选取最小值来重新排列,从而达到排序的目的。 * 选择排序算法通过选择和交换来实现排序,其排序流程如下: * (1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。.原创 2021-09-02 12:03:24 · 83 阅读 · 0 评论 -
算法-穷举算法-鸡兔同笼
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://www.joshua317.com/article/8算法-穷举算法-鸡兔同笼/** * 穷举算法 * 穷举算法是最基本的算法思想,下面通过一个简单的例子来分析穷举算法的应用。 * 鸡兔同笼问题最早记载于1500年前的《孙子算经》,这是我国古代一个非常有名的问题。鸡兔同笼的原文如下: * 今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何? * 这个问题的大致意思是: * 在一个笼子里关着若.原创 2021-09-02 12:02:11 · 1347 阅读 · 0 评论 -
算法-递推算法-斐波那契数列
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://www.joshua317.com/article/7算法-递推算法-斐波那契数列/** * 递推算法 * 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果。递推算法的执行过程如下: * (1)根据已知结果和关系,求解中间结果。 * 2)判定是否达到要求,如果没有达到,则继续根据已知结果和关系求解中间结果;如果满足要求,则表示寻找到一个正确的答案。 * 递推算法往往.原创 2021-09-02 12:00:42 · 698 阅读 · 0 评论 -
常见算法的英文命名(排序、查找)
本文为joshua317原创文章,转载请注明:转载自joshua317博客https://www.joshua317.com/article/6最近总结算法文档,大家可能经常搜索算法的命名,所以对常见算法的命名归纳总结了下,有不足之处,请拍砖,持续更新。。。一、排序算法:冒泡排序:BubbleSort选择排序:SelectionSort简单选择排序:SimpleSelectionSort插入排序:InsertionSort直接插入:DirectInsertionSort折半插入:H.原创 2021-09-02 11:58:55 · 1182 阅读 · 0 评论