随笔分类 -  常用算法

摘要:import java.util.Arrays; /** * 插入排序的思想: * 插入排序是将新的元素插入到一个排好序的子线性表中,直到整个线性表排好序 * 具体操作是:循环遍历整个待排序的表,将当前访问的元素赋值给一个临时变量curElement, * 然后利用一个内循环从当前位置i的前一个位置 阅读全文
posted @ 2021-06-22 13:35 有心有梦 阅读(35) 评论(0) 推荐(0)
摘要:汉诺塔问题 ​ 汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到B座,**但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。**在移动过程中可以利 阅读全文
posted @ 2021-04-08 22:00 有心有梦 阅读(403) 评论(0) 推荐(0)
摘要:牛客题目:请写一个整数计算器,支持加减乘三种运算和括号。 题目给出的算术表达式主要包括三部分:操作数、括号、运算符 一般的算术表达式都是中缀表达式,不易于编程计算。所以我们可以利用逆波兰算法将算术表达式的中缀形式转为更易于计算的后缀形式。 转换为后缀表达式的过程需要借助两个额外空间,栈S和数组列表L 阅读全文
posted @ 2021-03-31 22:45 有心有梦 阅读(228) 评论(0) 推荐(0)
摘要:快速排序 ​ 快速排序的整体思想就是在待排序数组中寻找一个称为主元(pivot)的元素,将数组分为两个部分,使得第一部分的所有元素都小于或者等于主元;第二部分的所有元素都大于主元。然后分别递归地对第一部分和第二部分进行快速排序。 ​ 在最差的情况下,划分n个元素的数组需要进行n次比较和n次移动,所以 阅读全文
posted @ 2021-03-21 12:27 有心有梦 阅读(45) 评论(0) 推荐(0)
摘要:我们曾在《计算机组成原理》这门课中学习过进制转换的相关知识,在这之前,我们应该首先了解一下原码、反码和补码。根据我们以前在《计算机组成原理》学到的知识,我们知道对于正数和负数,他们的原码、反码、补码是不一样的。 一、原码、反码、补码 对于正数而言,原码、反码、补码都是一样的,其中最高位表示符号位,因 阅读全文
posted @ 2020-05-28 22:11 有心有梦 阅读(3166) 评论(1) 推荐(1)
摘要:最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。解法有很多,现在来总结一下: 1、穷举法 这是暴力的方法,即选择两个数中较小的一个作为遍历的范围大小。然后从1开始遍历,判断同时满足是两个数的因子的数有哪些,然后求出最大值即可。 2、更相减损法 这个思想起源于我国古代的《 阅读全文
posted @ 2020-05-26 22:14 有心有梦 阅读(4024) 评论(0) 推荐(0)
摘要:埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。 援引自百度百科 算法思想:要得到自然数n以内的全部素数,必须把不大于的所有素数的倍数剔除,剩下的就是素数。 给出 阅读全文
posted @ 2020-05-25 22:37 有心有梦 阅读(1747) 评论(0) 推荐(0)
摘要:桶排序是对整数进行排序的高效算法,在进行桶排序的时候我们需要先确定key,即key代表得含义,以及key的取值范围,key的取值范围决定了桶的数量。假设键值的范围是从0到t,那么需要t+1个桶,标记分别为0、1、……、t 。如果元素的键值是i,那么就将该元素放入桶i中,每个桶放的都是键值相同的元素。 阅读全文
posted @ 2020-05-24 22:04 有心有梦 阅读(1030) 评论(0) 推荐(0)
摘要:1、堆的概念 堆排序依赖的数据结构是完全二叉树,要想是完全二叉树,前提必须是二叉树(废话),二叉树就要求父亲结点至多有两个孩子,即可以有一个、两个或者没有孩子。 完全二叉树则是在二叉树的基础上多了一些限制条件,那就是: 1、要么二叉树的每一层都是满的,即除叶子结点之外,其他结点都必须拥有左右孩子; 阅读全文
posted @ 2020-05-24 20:00 有心有梦 阅读(294) 评论(0) 推荐(0)