
数据结构和算法
文章平均质量分 92
易(Master Yi)
这个作者很懒,什么都没留下…
展开
-
数据结构和算法(六)循环不变式与插入排序证明 (算法导论读书笔记)
循环不变式与插入排序证明算法实现- 伪代码循环不变式循环不变式插入排序正确性证明插入排序说明: 工作方式像排序一手扑克牌。开始时,左手为空并且桌子上的牌面向下。然后每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与自己手中的每张牌进行比较。算法实现- 伪代码INSERTION-SORT(A) A表示待排序的数组 INSERTION-SORT(A...原创 2019-11-16 15:00:04 · 871 阅读 · 0 评论 -
数据结构和算法(一) 算法时间复杂度
算法时间复杂度定义分析时间复杂度-推导大O阶方法常见时间复杂度(大O记号表示)最坏情况与平均情况时间复杂度排序定义时间复杂度算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。其中f(n)是问题规模n的某个函数。大O记号用大写O()来体现算法时间你复...原创 2018-10-04 20:58:38 · 599 阅读 · 0 评论 -
数据结构和算法(二) 线性表(单链表、双链表等)
定义线性表(List)零个或多个数据元素的有限序列。现有如下线性表a(1)a(2)a(3)a(i-1)a(i)a(i+1)a(n)直接前驱元素a(i-1) 领先于a(i),称为a(i-1)是a(i)的直接前驱元素直接后继元素a(i+1) 是a(i)的直接后继元素空表线性表元素的个数n (n >= 0)定义为线性表的长度,当n=0时,称为空表...原创 2018-10-05 09:10:24 · 270 阅读 · 0 评论 -
数据结构和算法(三) 快速排序-分治
快速排序-分治介绍:伪代码:伪代码分析:Java代码:介绍:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。解析:有数组A,取一个基准值,通过一轮排序的算法后,数组被基...原创 2019-05-21 15:25:45 · 317 阅读 · 0 评论 -
数据结构和算法(四)动态规划-钢条问题
动态规划一、概念二、应用:钢条切割问题:问题描述及代码三种方案时间复杂度分析一、概念动态规划与分治方法相似,都是通过组合子问题的解来求解原问题。分治方法将问题划分为互不相交的子问题,递归求解子问题,再将它们的解组合起来,求出原问题的解。动态规划应用于子问题重叠情况,不同的子问题具有公共的子子问题。这种情况,分治算法会反复地求解公共子子问题,动态规划算法对每个子问题只求解一次。动态规划方法通...原创 2019-06-05 11:38:16 · 568 阅读 · 0 评论 -
数据结构和算法(五)树(二叉树、满二叉树、完全二叉树、二叉搜索树)
二叉树二叉树:满二叉树:完全二叉树:二叉搜索树:1、构建2、插入3、最大值和最小值4、遍历5、搜索6、删除二叉树:二叉树是每个结点最多有两个子树的树结构满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。...原创 2019-06-12 16:27:50 · 712 阅读 · 0 评论