
算法
文章平均质量分 93
Java道哥
汲取 传承 打造开源影响力
展开
-
平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了
二分法是我们常用的一种查找算法,可以有效的提升数据找找的效率,其实现思路是:1、首先对数据集进行排序。2、找到数据集中间位置的节点。3、用查找的条件和间节点进行比较,等于则直接返回,中间节点数据小于查找条件则说明数据在排序列表的左边,大于则说明数据在排序列表的右边。比如我们要从[9,2,6,5,7,8,4,3,1] 快速查找到 7的数据那么我们做以下操作从二分法查找的过程来看,如果能保证数据的有序性,并且预先把数据进行分段存储好数据的中间节点,那么查找的时候就会很简单,所以如果要使用二分法,我们通常都会在数转载 2022-06-04 23:56:47 · 138 阅读 · 0 评论 -
五大常用算法:回溯算法
回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。回溯法可以理解为通过选择不同的岔路口寻找目的地,一个岔路口一个岔路口的去尝试找到目的地。如果走错了路,继续返回来找到岔路口的另一条路,直到找到目的地。回溯法经典题——八皇后:在国际象棋中,皇后是最强大的一枚棋子,可以吃掉与其在同一行原创 2020-11-06 11:50:58 · 2676 阅读 · 0 评论 -
回溯法与0-1背包问题
给定n中物品和一个容量为c的背包,物品i的重量为Wi,其价值为Vi,0-1背包问题是如何选择装入背包的物品(物品不可分割),使得装入背包的物品的价值为最大。1.题目分析:考虑到每种物品只有2 种选择,即装入背包或不装入背包,并且物品数和背包容量已给定,要计算装入背包物品的最大价值和最优装入方案,可用回溯法搜索子集树的算法进行求解。2.算法设计:a. 物品有n种,背包容量为C,分别用p[i]和w[i]存储第i种物品的价值和重量,用x[i]标记第i种物品是否装入背包,0,代表不取这个物..转载 2020-11-05 11:30:38 · 235 阅读 · 0 评论 -
回溯法与八皇后问题
在国际象棋中,皇后是最强大的一枚棋子,可以吃掉与其在同一行、列和斜线的敌方棋子。比中国象棋里的车强几百倍,比她那没用的老公更是强的飞起(国王只能前后左右斜线走一格)。上图右边高大的棋子即为皇后。 八皇后问题是这样一个问题:将八个皇后摆在一张8*8的国际象棋棋盘上,使每个皇后都无法吃掉别的皇后,一共有多少种摆法?此问题在1848年由棋手马克斯·贝瑟尔提出,岂止是有年头,简直就是有年头,82年的拉菲分分钟被秒的渣都不剩。 八皇后问题是典型的回溯法解决的问题,我们以这个问题为例介绍回溯法。 所.转载 2020-11-03 17:37:25 · 977 阅读 · 0 评论 -
贪心算法 浅述
今天是第11周课程的第一课。有同学对排序算法表现出了极大的兴趣,还有的表示面向对象编程的原则太干巴巴了,不好理解。今天的课程我就换一个主题,讲点有趣的东西吧。这是我们小密圈《进击的Java新人》课程第一次涉及算法设计之类的知识。算法设计是一个比较有趣的话题,我们后面要讲的很多与查找,排序有关的知识和数据结构,如果能先学会算法设计,就会有更加深刻的认识。什么是算法Algorithm,算法,这个东西,就是解决问题的方法而已。没什么高深的。比如说,大家都熟悉的一个高斯的故事,就是高斯上小学的时候,转载 2020-10-31 16:23:24 · 209 阅读 · 0 评论 -
选择排序与冒泡排序的区别
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。冒泡排序(Bubble Sort)是一种计算解学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。..转载 2020-10-31 16:17:57 · 1308 阅读 · 0 评论 -
五大常用算法:贪心算法
贪心算法贪心算法简介: 贪心算法是指:在每一步求解的步骤中,它要求“贪婪”的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解。 贪心算法每一步必须满足一下条件: 1、可行的:即它必须满足问题的约束。 2、局部最优:他是当前步骤中所有可行选择中最佳的局部选择。 3、不可取消:即选择一旦做出,在算法的后面步骤就不可改变了。贪心算法案例:1.活动选择问题 这是《算法导论》上的例子,也是一个非常经典的问题。有n个需要在同一天使用同一个教...转载 2020-10-26 16:49:05 · 987 阅读 · 0 评论 -
五大常用算法:分治算法
分治算法: 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题..转载 2020-10-20 22:37:05 · 2392 阅读 · 0 评论