
算法
文章平均质量分 67
又蠢又笨的懒羊羊程序猿
『世界上只有一种真正的英雄主义』
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java实现堆排序及详细图解
文章目录堆排序前言实现步骤代码实现 堆排序 前言 堆排序(HeapSort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似于完全二叉树的结构,同时满足子节点的键值总是小于(或者大于)其父节点。 每个节点的值都大于或者等于其左右子节点的值,称为大顶堆;或者每个节点的值都小于或者等于其左右子节点的值,称为小顶堆。 对堆中的节点按层进行编号,将这种逻辑结构映射到数组如下图所示: 该数组从逻辑上讲就是一个堆结构,并且有以下特点: 大顶堆:arr[i] >= arr[2i+1] &&a原创 2021-08-23 11:44:35 · 25295 阅读 · 7 评论 -
Java语言实现插值查找
插值查找 前言 在上一篇文章中已经将讲解过二分查找算法,而插值查找与二分查找类似,只不过是在二分查找的基础上进行优化,讲mid的值进行了一定调整优化,将mid的值修改为,该算法时间复杂度为O(log n)。 优缺点 优点:对于数据量较大并且关键字分布均匀的查找表来说,采用插值查找速度更加快。 关键字分布不均匀的情况下,该方法不一定比二分查找好。 代码实现 /** * 插值查找 * 说明:插值查找算法要求数组有序 * @param array 数组原创 2021-08-13 17:00:09 · 182 阅读 · 0 评论 -
Java语言实现二分查找(可查询重复数据)
文章目录二分查找1.前言2.算法思想3.图示4.优缺点5.代码实现标准二分查找拓展:可以查询重复值 二分查找 1.前言 二分查找是一种查询效率非常高的查找算法,又称为折半查找。 用递归思想来实现二分查找较为形象并且代码可读性强,因此本文中将介绍二分查找的思想,代码实现以及重复值查找的拓展。 2.算法思想 使用二分查找的前提是在一组有序的序列下进行,每次以序列的中间位置的数作为标准与带查找的数进行比较,从而调整查找方向,并且缩小查找范围,直至匹配成功。 3.图示 4.优缺点 优点:比较次数少,查找速度快原创 2021-08-13 16:01:55 · 981 阅读 · 1 评论 -
回溯算法解决迷宫问题
文章目录前言一、回溯法二、算法应用——迷宫问题1.问题描述2.解题思路三、Java代码实现 前言 本文介绍一种经典算法——回溯法,可作为迷宫问题的一种解法。 一、回溯法 回溯是一种算法思想,用递归实现,类似于枚举的搜索尝试过程。主要思想在于搜索尝试过程中寻找问题的解,当发现不满足求解条件时,则立刻回溯返回,尝试别的解决方案。可作为一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现该选择不优或者无法达到目标,就退回一步重新进行选择,而满足回溯条件的某个状态点称为“回溯点”。 二、算法应用原创 2021-08-11 16:46:45 · 4471 阅读 · 2 评论 -
递归回溯解决八皇后问题
文章目录前言八皇后问题问题解析代码实现完整代码 前言 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。现代教学中,把八皇后问题当成一个经典递归算法例题。 八皇后问题 问题解析 首先八个皇后之间需要满足: 不在同原创 2021-08-13 10:47:09 · 457 阅读 · 2 评论