随笔分类 - 重拾算法
1
对一些算法基础的整理
摘要:前言 如果整数过大如何求值,比如说"4654564646547897891", "12315456456454564" 这时候常规整数装不下! 代码 方案一: 优化方案二: 九个一组:
阅读全文
摘要:前言 比如说 1593212,去掉一个数字后,保留的是最小值。 原理:因为要保留最小值,那么要删除最高位的数字是最明显的。 那么1和5到底删除哪一个呢?当然是删除最大值了。 代码 上面效率并不高。 优化,将char[] 物理结构转换为 stack 逻辑逻辑。
阅读全文
摘要:前言 题目: 给出一个正整数,找出这个正整数所以数字全排列的下一个数。 比如说12345.返回 12354. 12354 返回 12435 自己的解答
阅读全文
摘要:前言 概念: 如果一个数是2的幂,那么它的二进制是这样的: 2 10 4 100 8 1000 16 10000 也就是第一个是1,其他都是0。 然后 1的话: 1 01 4 11 8 111 16 1111 正文 (num&(num 1))==0 就是了。 解释,为什么不是2的幂就不会等于0呢?
阅读全文
摘要:前言 写写最大公约数 正文 几个概念: 辗转相除法,欧几里得算法。 两个正整数a 和 b (a b),它们的最大公约数等于a处于b的余数c和b直接的最大公约数。 更相减损数 两个正整数a和 b(a b),它们的最大公约数等于a b的差值c与b的最大公约数 两者结合 总结 数学博大精深!
阅读全文
摘要:前言 要求: 实现一个栈,改栈带有出栈,入栈,和取栈中最小数。要求时间复杂度都是o(1); 实现 C 代码:
阅读全文
摘要:前言 二叉堆分为最大堆与最小堆,一组不规则的完全二叉树或者近完全二叉树,可以通过调整称为二叉堆。 序列化: 形成二叉堆通过下沉。 插入元素通过上浮。 排序: 二叉堆的最大堆为父节点一定大于或者等于子节点,堆顶一定最大。 如果最小堆的堆顶与最后一个元素交互,那么最后一个元素一定最大。 如果最后一个元素
阅读全文
摘要:前言 什么是快速排序? 首先问道:比如说从大到小,如何确定一个数组中的一个数已经排好了顺序? 这个当然有很多种方式,比如说排序的时候最大值在最左边,那么确定了最左边的位置,这就是冒泡的最基本的原理。 快速排序同样有自己的规则,如果一个数的右边都小于他,左边都大于他,是否这个数不需要变换位置? 答案是
阅读全文
摘要:前言 在前一节中,有冒泡算法的优化。 在这:https://www.cnblogs.com/aoximin/p/12251638.html。 什么是鸡尾酒排序呢? 比如说: 我们仅仅需要把1放在第一个位置即可。 假设我们是从小到大排序,那么根据最大值冒泡,需要大量次数,根据最小值冒泡只需一次。 这时
阅读全文
摘要:前言 冒泡排序是一种通用的算法,凡是通用的,可以理解为效率不高,但是通用。 code 从小到大的排序: 这里面稍微有点难以理解的地方是如何一开始就确认: i arr[j + 1]) { temp = arr[j+1]; arr[j + 1] = arr[j]; arr[j] = temp; sort
阅读全文
摘要:归纳 1.时间复杂度为o(n^2) 冒泡排序 选择排序 插入排序 希尔排序 2.时间复杂度为o(nlogn) 快速排序 归并排序 堆排序 3.时间复杂度为线性排序 计数排序 桶排序 基数排序
阅读全文
摘要:前言 什么是二叉堆? 看下百度百科的定义: 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。 完全二元树,我们是知道的。 近
阅读全文
摘要:前言 树的遍历分为: 1.深度优先遍历 2.广度优先遍历 深度优先遍历: 1.前序遍历 2.中序遍历 3.广序遍历 广度优先遍历: 层序遍历 深度优先遍历 如图: 前序遍历 前序遍历的规则为:根节点、左子树、右子树 根据规则,第一个点即为根节点: 第一个为A。 A 有左子树:左子树的第一个节点又为左
阅读全文
摘要:前言 非线性结构是相当线性结构而言的。 线性结构是一个有序数据元素的集合。 下述来自百度百科: 正文 在非线性结构中常用的:有树和图。 树 树的数据结构是怎么样的? 人们把这种分叉的东西,看起来像树一样,就称作树。其实这一点也不像树,毕竟树根在下面,总之这个称作树的人,可以吹好久的牛了。 树的概念:
阅读全文
摘要:前言 在数据结构中,人们常常把把结构分为物理结构和逻辑结构。 物理这个词,我们很容易想到材料。至于做门用木材还是铁块,怎么做,这就是逻辑了。 物理结构:顺序存储结构、链式存储结构。 逻辑结构:线性结构:顺序表、栈、队列。非线性结构:树,图。 物理结构 顺序存储结构 我们在学c++的时候接触到一个东西
阅读全文
摘要:前言 最一些算法基础的整理。 很多人提到算法就会涉及到数据结构。 个人理解之所以有数据结构是因为存储这个问题。 程序无论是读取硬盘还是内存,涉及到如何读取,读取问题呢,相当于找。那么如何能够快速的找到?关键在于当时我们怎么放,如何存放就是数据结构。 常见的数据结构:线,树,图。 个人理解,线是一维概
阅读全文
1
浙公网安备 33010602011771号