算法
文章平均质量分 75
算法学习笔记
万小筒
这个作者很懒,什么都没留下…
展开
-
04-排序算法应用场景
升级版:给定一个数组,和一个数num,要求小于num的数在数组的左边,等于num的数在中间,大于num的数在数组的右边。已知一个几乎有序的数组,几乎有序是指数组排好序后,每个元素的移动距离不超过k位置,并且k相对于数组来说很小,请选择一个合适的排序算法进行排序。描述:给定一个数组,和一个数num,要求小于num的数在数组的左边,大于num的数在数组的右边。数组[7,5,6,4],逆序对有 (7, 5), (7, 6), (7, 4), (5, 4), (6, 4):第二种方式代码比较简洁。原创 2024-01-29 18:20:49 · 403 阅读 · 0 评论 -
03-快速排序时间复杂度论证
证明过程中涉及到一些数学公式,表示连加求和,i 表示的就是E(X)是数学期望,也表示均值,离散型随机变量E(X) =代表具体值,该值出现的概率)。快速排序的时间依赖于划分是否平衡,而划分是否平衡依赖于划分的元素,如果划分是平衡的,则性能跟归并排序一致,如果划分不平衡,则性能接近插入排序。原创 2024-01-12 14:32:51 · 868 阅读 · 1 评论 -
02-master公式
naster公式是用来计算中一样的时间复杂度。公式:T(N)=a∗T()+O(其中a为生成的子问题数,b为每次递归是母问题的的数据规模,N为母问题的数据规模,d为除了子问题外的操作。原创 2024-01-03 17:06:23 · 369 阅读 · 0 评论 -
01-排序算法
堆排序算法的思想是:构建一个最大堆,然后把最大的元素跟最后一个元素互换后,把堆的节点数量减1,然后剩下的节点执行heapfipy,重复上面过程完成排序。(二叉)堆是一个数组,它可以被看成是一个近似的完全二叉树,二叉堆分为两种形式,最大堆和最小堆,最大堆是指父节点大于等于子节点,最大堆的最大元素在根节点。思想:比较相邻的两个数,左边的数大于右边的数则交换,遍历完最大的数会在最后一个位置,接下来第二遍遍历的长度减1,依次比较相邻的两个数并交换,以此类推。(1),和以i为根节点的子树的方法运行时间。原创 2024-01-29 18:20:43 · 830 阅读 · 0 评论 -
算法基础-渐近记号
但是不是所有的函数都能渐近比较的,对于两个函数f(n)和g(n),也许f(n) = O(g(n))和 f(n) =f(n) = O(g(n)) 且 g(n) = O(h(n)),那么 f(n) = O(h(n))。,使得足够大的n,函数f(n)能够"夹入"c1g(n)和c2g(n)之间,则f(n)属于。,函数f(n)在一个常量因子内等于g(n),所以g(n)是f(n)的一个。扔掉低阶项后得出f(x) =f(n) = O(g(n)) 当且仅当 g(n) =f(n) = o(g(n)) 当且仅当 g(n) =原创 2024-02-05 11:38:15 · 962 阅读 · 1 评论