
算法专项
文章平均质量分 90
指尖侠
热爱可抵漫长岁月
展开
-
二分算法
0、二分法简介简介二分查找(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是用来在一个有序数组中查找某一元素的算法。工作原理以在一个升序数组中查找一个数为例。它每次考察数组当前部分的中间元素,如果中间元素刚好是要找的,就结束搜索过程;如果中间元素小于所查找的值,那么左侧的只会更小,不会有所查找的元素,只需到右侧查找;如果中间元素大于所查找的值同理,只需到左侧查找。性质时间复杂度原创 2021-04-01 11:20:28 · 3130 阅读 · 0 评论 -
洛谷题单-【算法1-5】贪心
0.简介贪心算法,是用计算机来模拟一个“贪心”的人做出决策的过程。这个人十分贪婪,每一步行动总是按某种指标选取最优的操作。而且他目光短浅,总是只看眼前,并不考虑以后可能造成的影响。可想而知,并不是所有的时候贪心法都能获得最优解,所以一般使用贪心法的时候,都要确保自己能证明其正确性。适用范围 贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解证明方法贪心算法有两种证明方法:反证法和归纳法。一般情况下,一道...原创 2021-03-19 16:32:34 · 1330 阅读 · 0 评论 -
暴力枚举
枚举枚举是基于已有知识来猜测答案的一种问题求解策略。枚举的思想是不断地猜测,从可能的集合中一一尝试,然后再判断题目的条件是否成立。要点给出解空间 建立简洁的数学模型。 枚举的时候要想清楚:可能的情况是什么?要枚举哪些要素? 减少枚举的空间 枚举的范围是什么?是所有的内容都需要枚举吗? 在用枚举法解决问题的时候,一定要想清楚这两件事,否则会带来不必要的时间开销。 选择合适的枚举顺序 根据题目判断。比如例题中要求的是最大的符合条件的素数,那自然是从大到小枚举比较合适。.原创 2021-03-14 20:20:35 · 490 阅读 · 1 评论 -
五大排序算法(冒泡、选择、快排、归并、堆排)
1、Arrays.sort排序例题洛谷P2676Bookshelf B数组的全部元素从小到大排序:Arrays.sort(a); //a数组名,注意元素个数:a的长度有多少,就对多少个元素排序!!!递减排序Arrays.sort(intArray,Comparator.reverseOrder());例:对a的全部n个元素降序排序Integer a[]=new Integer[n];Arrays.sort(a,Collections.reverseOrder());标签:贪...原创 2021-03-07 22:15:19 · 862 阅读 · 10 评论 -
模拟与高精度算法
1、模拟模拟就是用计算机来模拟题目中要求的操作。模拟题目通常具有码量大、操作多、思路繁复的特点。由于它码量大,经常会出现难以查错的情况,如果在考试中写错是相当浪费时间的。技巧。写模拟题时,遵循以下的建议有可能会提升做题速度:在动手写代码之前,在草纸上尽可能地写好要实现的流程。 在代码中,尽量把每个部分模块化,写成函数、结构体或类。 对于一些可能重复用到的概念,可以统一转化,方便处理:如,某题给你 "YY-MM-DD 时:分" 把它抽取到一个函数,处理成秒,会减少概念混淆。 调试时分块调原创 2021-03-07 17:48:33 · 1754 阅读 · 3 评论 -
递推与递归算法
1、简介递归的基本思想是某个函数直接或者间接地调用自身,这样原问题的求解就转换为了许多性质相同但是规模更小的子问题。求解时只需要关注如何把原问题划分成符合条件的子问题,而不需要过分关注这个子问题是如何被解决的。 如何给一堆数字排序?答:分成两半,先排左半边再排右半边,最后合并就行了,至于怎么排左边和右边,请重新阅读这句话。 你今年几岁?答:去年的岁数加一岁,1999 年我出生。 递归代码最重要的两个特征:结束条件和自我调用。自我调用是在解决子问题,而结束条件定义了最简子问题的答案。int fu原创 2021-03-01 22:45:10 · 3654 阅读 · 2 评论