算法之分治和构造

原理:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。 分治法求解步骤 (1)分解,将要解决的问题划分成若干规模较小的同类问题; (2)求解,当子问...

2018-02-01 23:41:36

阅读数 92

评论数 0

算法之动态规划

动态规划算法 思想原理:动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,...

2018-02-01 23:20:28

阅读数 48

评论数 0

算法之枚举和贪心

枚举(亦称穷举)算法 原理:枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。 核心思想:枚举所有的可能。枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算...

2018-02-01 22:52:40

阅读数 539

评论数 0

数据结构之二叉树的遍历方法

二叉树的遍历方式 前序遍历:先(根)序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 访问根结点; ⑵ 遍历左子树; ⑶ 遍历右子树。 递归代码实现procedure first(i:longint); begin write(a[i]); ifa...

2018-02-01 01:23:34

阅读数 50

评论数 0

数据结构之二叉搜索树

二叉搜索树: 二叉查找树又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 为了便于理解,这里上两张图 ...

2018-02-01 01:12:08

阅读数 47

评论数 0

数据结构之排序算法总结

排序种类及相应思想 ①冒泡排序:冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面...

2018-02-01 00:56:45

阅读数 36

评论数 0

数据结构之插入排序

插入排序:插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。因而空间复杂度为{O(...

2018-01-24 22:51:01

阅读数 57

评论数 0

数据结构之链表基础知识点

链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,链表比...

2018-01-24 20:46:51

阅读数 152

评论数 0

栈与队列的基础知识点

栈(stack)又名堆栈,它是一种特殊的线性表。元素之间成线性结构。在c++中其头文件为 特性:运算受限制,只允许在栈顶进行插入删除操作,插入叫做进栈,入栈或者压栈(push),删除叫做出栈(pop),由于有这种特性,所以著名特点是后进先出。 定义:stacks 现在展示一道题进行讲解吧,话...

2018-01-23 19:31:25

阅读数 902

评论数 0

判断素数及相关知识点

素数定义:如果一个正整数只能被1和它本身整除,则这个数称为素数(特别地:1除外),2为最小的素数。 判断原理:根据定义,我们将被判断的数除以(2到对这个数开根号)的所有数,如果有一个能除尽,那么为非素数,如果均除不尽,那么可以判断这个数为素数。 这里解释为什么只用除到根号m吧,根据数学知识...

2018-01-21 17:02:53

阅读数 123

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭