随笔分类 -  算法

摘要:位运算符 含义 运算符 说明 示例 左移 << 相当于十进制的*2 0011=>0110(3*2=6) 右移 >> 相当于十进制的//2 0110=>0011(6//2=3) 按位或 | 有一位为1则为1 0 0 1 1 1 0 1 1 1 0 1 1 按位与 & 两位都为1才为1 0 0 1 1 阅读全文
posted @ 2021-01-25 23:33 下山打老虎i 阅读(106) 评论(0) 推荐(0)
摘要:贪心算法 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法并不保证会得到最优解,但是在某些问题上贪心算法的解就是最优解。要会判断一个问题能否用贪心算法来计算。 1.找零问题 假设商店老板需要找零n元钱,钱 阅读全文
posted @ 2019-05-12 18:47 下山打老虎i 阅读(655) 评论(0) 推荐(0)
摘要:希尔排序 希尔排序思路: 希尔排序是一种分组插入排序算法。 首先取一个整数d1=n/2, 将元素分为d1个组, 每组相邻量元素之间距离为d1,在各组内进行直接插入排序 取第二个整数d2=d1/2, 重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序 希尔排序每趟并不使某些元素有 阅读全文
posted @ 2019-05-07 23:57 下山打老虎i 阅读(600) 评论(0) 推荐(0)
摘要:假设现在的列表分成两段有序的列表,如何将其合并成一个有序列表。 这种操作称为一次归并。 一次归并代码: def merge(nums, left, mid, right): """ 一次归并(把列表) :param nums: :param left: 第一个元素位置 :param mid: 中间元 阅读全文
posted @ 2019-05-06 14:28 下山打老虎i 阅读(263) 评论(0) 推荐(0)
摘要:快排思路: 取第一个元素p,使元素p归位 列表被p分成两部分,左边都比p小,右边都比p大 递归完成排序 快排用到了分治的思想 分治算法就是把一个复杂的问题分成两个或更多的相同或类似的子问题,当子问题足够简单可以求出解的时候,把所有子问题的解合并起来,就可以得到原问题的解。 我们先搞定p归位的函数pa 阅读全文
posted @ 2019-05-04 16:47 下山打老虎i 阅读(227) 评论(0) 推荐(0)
摘要:列表查找:从列表中查找指定元素 输入:列表、待查找元素 输出:元素下标或未找到元素 列表查找的两种方法: 顺序查找 从列表的第一个元素开始,顺序进行搜索,直到找到为止。 二分查找 (大前提有序)从有序列表的候选区[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。 从列表的第 阅读全文
posted @ 2019-05-04 14:18 下山打老虎i 阅读(1772) 评论(0) 推荐(0)
摘要:在开始这三种算法的学习之前,我们要先来补给几个知识: 时间复杂度 时间复杂度:用来评估算法运行效率的一个式子 时间复杂度-小结: 快速地判断算法复杂度: 简单情况: 确定问题规模n 循环减半过程 -- logn k层关于n的循环 n的k次方 复杂情况:根据算法执行过程判断 稳定性: 相同值的情况下, 阅读全文
posted @ 2019-05-03 12:51 下山打老虎i 阅读(559) 评论(0) 推荐(0)
摘要:此次分享的堆排序实现代码是没有使用递归的,在开始之前,要先补给几个知识。 知识补给1:完全二叉树 满二叉树:一个二叉树,如果每一层的节点数都达到最大值,则这个二叉树就是满二叉树。 在上图中,只有(a)是满二叉树。 完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若 阅读全文
posted @ 2019-05-02 20:44 下山打老虎i 阅读(428) 评论(0) 推荐(0)