随笔分类 -  数据结构与算法

摘要:关于背包问题的理解,请参考我的随笔: https://www.cnblogs.com/jmliao/p/9241091.html 下面给出C++代码 #include <iostream> #include <iomanip> using namespace std; #define MAX(a,b 阅读全文
posted @ 2018-06-29 11:11 IUNI_JM 阅读(51) 评论(0) 推荐(0)
摘要:01背包问题 有N件物品和一个容量为C的背包。第i件物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 w[i] 表示物品i的重量 v[i] 表示物品i的价值 C 表示背包的容量 dp[i][c]表示前i件物品恰放入一个容量为c的背包可 阅读全文
posted @ 2018-06-28 22:04 IUNI_JM 阅读(598) 评论(0) 推荐(0)
摘要:1. 快速排序算法 在常用的快速排序算法中,每一步均将第一个数放到合适的位置。 下面介绍一种将任意数放到合适位置的快速排序算法。 2. 数组中第k大数字 阅读全文
posted @ 2018-03-18 23:29 IUNI_JM 阅读(243) 评论(0) 推荐(0)
摘要:1. 位掩码 掩码(英语:Mask)在计算机学科及数字逻辑中指的是一串二进制数字,通过与目标数字的按位操作,达到屏蔽指定位而实现需求,C++中有很多运算符,常用的有与(&)、或(|)、非(~)、异或(^)、移位(<<和>>)等,部分位操作如下: 非(~) ~ 0000 0001 = 1111 111 阅读全文
posted @ 2018-03-09 19:30 IUNI_JM 阅读(1744) 评论(0) 推荐(0)
摘要:1. 递归函数模板 递归的前提是,找到一个公共子问题(或公共操作),然后将该函数构造为递归函数。 2. Example strcpy函数(非递归版) strcpy函数(递归版) 阅读全文
posted @ 2018-03-09 14:37 IUNI_JM 阅读(643) 评论(0) 推荐(0)
摘要:1 //查找算法: 2 // 顺序查找 3 // 二分查找(插值查找,斐波那契查找) 4 // 二叉排序树查找 5 // 哈希表查找 6 7 #include 8 using namespace std; 9 10 11 /*顺序查找*/ 12 int sequenceSearch(int*... 阅读全文
posted @ 2018-03-08 15:16 IUNI_JM 阅读(230) 评论(0) 推荐(0)
摘要:1 /************************************************************************/ 2 /* 八大排序算法概述及实现 */ 3 /* ... 阅读全文
posted @ 2018-03-08 09:16 IUNI_JM 阅读(259) 评论(0) 推荐(0)
摘要:1. 快速排序算法简介 快速排序方法是对冒泡排序的一种改进,基本思想是将待排序序列分成两部分,使其中一部分的记录都比另一部分的小,随后分别对这两部分再进行重复划分,最终使得整个序列有序。 该方法的基本思想是:(分治策略) 设置low,high两个指针,分别指向序列的第一个记录和最后一个记录。此时lo 阅读全文
posted @ 2017-04-15 09:54 IUNI_JM 阅读(440) 评论(0) 推荐(0)
摘要:(注:本文的相关叙述和图片摘自《数据结构与算法分析新视角》(周幸妮等),因此本文只是我的一个复习记录,详细的论述请参考该书。) 1. 最大(小)堆 对于一个完全二叉树来说,如果所有的结点(叶子结点除外)的值都大于(小于)其左右孩子结点的值,那么这个完全二叉树就被成为一个大(小)根堆。如下图所示。按照 阅读全文
posted @ 2017-04-14 10:19 IUNI_JM 阅读(7195) 评论(0) 推荐(0)
摘要:1. 二叉树的基本性质 二叉树的第i层至多有2i-1个结点(i>=1) 证明:(归纳法) 归纳基:i=1时,只有一个结点,2i-1=20=1; 归纳假设:假设对所有的i命题成立; 归纳证明:二叉树中每个结点最多有两个子树,则第i+1层的结点数为2*2i-2=2i-1. 深度为h的二叉树至多有2h-1 阅读全文
posted @ 2017-04-13 22:04 IUNI_JM 阅读(12119) 评论(0) 推荐(1)