算法
算法
Kinght_123
大家好,我是Kinght_123,欢迎大家关注!
展开
-
用C++和Python分别实现归并排序(详细讲解!!!)
在算法与程序设计中,我们采用分而治之的策略就是分治算法,其核心就是把一个大规模的问题分解为若干小规模的相同子问题,分而治之,从而达到减少时间复杂度,提高运算效率的目的。寻求若干个子问题的解决办法,只要我们把子问题划分的足够小,我们就可以用简单的方法解决问题。把要解决的问题分解成若干个规模较小的、相互独立的、与原问题形式相同的子问题。以数组【1, 3, 5, 1, 6, 100, 985, 221】为例子。按照原问题的要求,将子问题逐层分解操作之后,再次合并构成原问题的解。原创 2024-01-17 15:13:10 · 499 阅读 · 0 评论 -
学C++、C的必须要会的基础算法题目,对新手很友好,从零到入门。(后续会不断完善这些题目)
以学习C、C++算法题为主,顺便巩固C、C++的语言基础,从零开始到入门,一步一个脚印,慢慢刷题,题目难度由潜入深,最终实现质的飞跃。前缀和是一种重要的预处理,能大大降低查询的时间复杂度,而差分则是一种和前缀和相对的策略。模拟,顾名思义就是题目要求你做什么你就做什么,这样的题目很考验选手的代码组织能力。分治,即分而治之,将大问题分解为小问题,分别求解,最后合并结果。这一部分的内容包含了 OI 中的基础算法,供各位巩固基础。这里不仅仅有非常基础的模拟,也有一些非常复杂的题目。数组可以用于存储大量的信息。原创 2024-01-11 11:33:49 · 1187 阅读 · 0 评论 -
异或的应用。(提取出数字中最右侧的1,面试中经常用的到)
我们都知道,在计算机系统中,所有数字的存储方式都是二进制,那么我们需要提取数字中的最右侧的1该怎么办呢?异或的应用十分的重要。比如当我们面试时,面试官问了一个问题:在一堆数字中,只有两个数字出现的次数为奇数次,其他的数字出现的次数都为偶数次,要求求出奇数次的数字a和b,要求时间复杂度O(N),额外空间复杂度O(1).首先,我们需要异或一遍数组,这样得到的结果就是a^b,然后怎么算呢?然后a^b肯定是不为0的,我们需要知道a或者b的数值就可以算出结果,那么怎么知道a或者b呢?a和b在计算机的存储形式中都是原创 2022-06-27 19:57:44 · 367 阅读 · 0 评论 -
关于二分法的模板!!(Python)
什么是二分法?二分法的前提是你知道答案在某一个区间中,然后你需要在这个区间中去寻找答案。这样用二分法比较快,二分法用于查找一个在目标区间的答案。Codedef binarySearch(nums, target): # 定义二分法的函数 if len(nums) == 0: return -1 left = 0 right = len(nums) while left < right: # 这里必须是<号,因为如果是<=号的话就会出现越界的情况 mid原创 2021-05-09 19:21:12 · 377 阅读 · 0 评论 -
Python算法训练之用写一个关于分数的类!!
类的功能可以加减。可以显示分数。可以判断两个分数是否相等。Codefrom fractions import gcdclass Fraction: def __init__(self, top, bottom): self.num = top self.den = bottom def __str__(self): return str(self.num) + '/' + str(self.den) def gc原创 2021-03-12 16:04:53 · 402 阅读 · 0 评论 -
Python算法之欧几里得算法的实现!!
欧几里得算法欧几里得算法指出,对于整数m和n,如果m可以被n整除,那么它们的最大公因数为n。然而,如果m不可以被n整除,那么结果就是n与m除以n的余数的最大公因数。Code:# 欧几里得算法def func(m, n): while m % n != 0: oldm = m oldn = n m = oldn n = oldm % oldn return nprint(func(15000, 55550))原创 2021-03-12 15:35:46 · 2756 阅读 · 0 评论 -
Python的math.sqrt函数的内部解析。————(用牛顿迭代法求平方根)
math.sqrt()函数Python函数内部的求平方根的方法。直接调用就可以。牛顿迭代法求平方根公式:以上公式接受一个值n,并且通过再每一次迭代中将newguess赋值给oldguess来反复猜测平方根。大概反复迭代20次左右返回的就是n的平方根。Code:def func(n): root = n / 2 for k in range(20): root = (1 / 2) * (root + n / root) return rootpri原创 2021-03-12 15:19:32 · 7716 阅读 · 0 评论 -
滑动窗口模板!(学算法必备!!!)
def findSubArray(nums): N = len(nums) # 数组/字符串长度 left, right = 0, 0 # 双指针,表示当前遍历的区间[left, right],闭区间 sums = 0 # 用于统计 子数组/子区间 是否有效,根据题目可能会改成求和/计数 res = 0 # 保存最大的满足题目要求的 子数组/子串 长度 while right < N: # 当右边的指针没有搜索到 数组/字符串 的结尾 sums原创 2021-02-21 10:49:40 · 547 阅读 · 5 评论 -
并查集的详细讲解!!!——————学算法、数据结构必备。
一、什么是并查集?并查集是一种数据结构。并查集这三个字,一个字代表一个意思。并————代表合并查————代表查找集————代表这是一个以字典为基础的数据结构,它的基本功能是合并集合中的元素,查找集合中的元素。并查集的典型应用是有关联连通分量的问题。因为并查集解决单个问题(添加,合并,查找)的时间复杂度都是O(1),因此,并查集的应用范围十分的广泛。二、并查集的代码实现1.集合树用字典存储的定义并查集使用的是字典来存储树,字典的键是子节点,值是父节点。注:与二叉树、链表不同,二叉树、链表原创 2021-01-17 23:27:33 · 723 阅读 · 0 评论 -
关于DFS和BFS算法——Python的代码实现和讲解。
1.什么是DFS和BFS?DFSDFS,通俗来讲,就是深度优先搜索,它可以通过栈来实现。举个例子:图中的例子以A为出发点。那么DFS的其中一个结果就是ABDFEC。简单点概括就是一条路走到黑,如果无路可走了,就会有一个回溯的过程,直到所有的节点都已经走过了。BFSBFS,通俗来讲,就是广度优先搜索,它可以通过队列来实现。也是上面的图片的例子:BFS的其中一个结果就是:ABCDEF,概括来说,就是把每个的相关点都依次的写出来。2.DFS和BFS的代码实现DFS的代码实现原创 2021-01-13 10:23:55 · 7622 阅读 · 8 评论 -
The Primary algorithms---------Three
目录The Primary algorithms---------Three左神算法——初级班第3节1.排序的稳定性2.工程中的综合排序算法3.有关归并排序的补充4.认识比较器的使用视频链接The Primary algorithms---------Three左神算法——初级班第3节1.排序的稳定性定义——相同的值排序完后的相对顺序不会被打乱,有稳定性,否则,没有稳定性。插入排序、冒泡排序、归并排序可以做到排序的稳定性;选择排序、快排、堆排做不到排序的稳定性。(事实上快排可以做到排序的稳定性,原创 2021-01-11 17:22:17 · 149 阅读 · 0 评论 -
The Primary algorithms---------Two
The Primary algorithms---------Two左神算法初级班——第二节1.关于堆的介绍堆是计算机中一类特殊的数据结构,堆通常可以被看做是一棵完全二叉树的数组对象。如果一个节点的位置是n,那么它的父节点为(n/2),它的左孩子的节点为(n2),右孩子的节点为(n2+1)。堆分为大根堆和小根堆2.完全二叉树的概念若设二叉树的高度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数,且第h层所有的节点都连续集中在最左边,这就是完全二叉树。3.视频链接—原创 2021-01-02 12:05:10 · 179 阅读 · 1 评论 -
关于动态规划的一般做法!
总结动态规划1.最后一步我认为动态规划的最后一步特别关键,一个关于动态规划的题目,最先需要的是弄明白它的最后一步,从最后一步起,一步一步的往前推。2.子问题所谓的动态规划,就是把一个十分复杂的大问题划分成一个一个的子问题,通过解决子问题来解决最终的大问题,如果你所有的子问题都弄明白了,那么最终的大问题也就迎刃而解了,子问题的解决步骤:状态定义——定义关于问题求解的答案状态转移——分析一个一个子问题中的关联与解决措施状态初始化——一般关于动态规划的题,题目中会有关于前几步的操作或者提示,这就需原创 2020-12-28 07:59:40 · 204 阅读 · 0 评论 -
The Advanced algorithms ————One
The Advanced algorithms ————One左神算法进阶1原创 2020-12-26 23:57:33 · 152 阅读 · 0 评论 -
The Primary algorithms-------One
正文原创 2020-12-23 16:21:58 · 170 阅读 · 1 评论