随笔分类 -  Algorithm

摘要:0x01数据结构——C语言实现(二叉查找树) 二叉查找树是一种特殊的二叉树,使二叉树成为二叉查找树的性质是:对于树中的每一个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。这意味着,该树所有的元素可以用某种统一的方式排序。 二叉查找树的C语言实现: b_ 阅读全文
posted @ 2018-07-01 14:56 main_c 阅读(578) 评论(0) 推荐(0) 编辑
摘要:0x01数据结构——C语言实现(二叉树)二叉树(binary tree)是一棵树,其中每个节点都不能有多于两个的儿子。二叉树的一个性质是平均二叉树的深度要比N小得多,这个性质有时很重要。分析表明,这个平均深度为O(N)" role="presentation">O(N... 阅读全文
posted @ 2018-07-01 14:39 main_c 阅读(409) 评论(0) 推荐(0) 编辑
摘要:0x01数据结构——C语言实现(树)树(tree): 一棵树是一些节点的集合。这个集合可以是空集;若非空,则一棵树由称为根(root)的节点r以及0个或多个非空的(子)树T1" role="presentation">T1T1,T2" role="presentati... 阅读全文
posted @ 2018-07-01 14:38 main_c 阅读(565) 评论(0) 推荐(0) 编辑
摘要:最大子序列求和问题问题描述给定整数A1" role="presentation">A1A1,A2" role="presentation">A2A2,…, AN" role="presentation">ANAN(可能有负数),求∑k=ijAk" rol... 阅读全文
posted @ 2018-06-23 17:30 main_c 阅读(347) 评论(0) 推荐(0) 编辑
摘要:/*最大子数组问题给出每天股票的价格,求出买进和卖出的时间,使得获利最高。输入: P[0~n-1]输出: 买进的时间i和卖出的时间j(0#include struct ans { int low, high, sum;};void FindMaxSub(int ... 阅读全文
posted @ 2018-06-23 17:28 main_c 阅读(707) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(队列)实现/*使用队列时,插入在一端进行而删除在另一端进行队列的基本操作是入队(enqueue),它是在表的末端(队尾(rear))插入一个元素,还有出队(dequeue),它是删除(或返回)在表的开头(队头(front))的元素。 ... 阅读全文
posted @ 2018-04-25 16:40 main_c 阅读(219) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(栈)栈的实现/* 栈(tack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。 对栈的基本操作有Push(进栈)和Pop(出栈)。 Functions: (在链表中增加附加头结点的版本) 创建一... 阅读全文
posted @ 2018-04-25 14:09 main_c 阅读(415) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(多项式)/*filename:polynomial*/#ifndef POLYNOMIAL#define POLYNOMIAL//一元多项式的表示//Pn(x)=p0 + p1*x + p2*x^2 + ... + pn*x^n/*基本... 阅读全文
posted @ 2018-04-24 16:30 main_c 阅读(397) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(双向循环链表)/* 循环双链表 Functions: (在链表中增加附加头结点的版本) 创建一个空线性表 将链表置为空表 计算表长度 返回附加头结点的地址 搜索函数:找x在表中的位置,返回表项位置 定... 阅读全文
posted @ 2018-04-23 21:19 main_c 阅读(145) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(单向循环链表)/*filename:circular_list.h*//* 循环链表(circular list)是另一种形式的表示线性表的链表,与单链表不同的是, 表尾结点的link域中不是NULL而是存放指向链表开始结点的指针。 F... 阅读全文
posted @ 2018-04-23 21:17 main_c 阅读(222) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(双链表)/*filename:double_linked_list.h*//* 双链表(double linked list) Functions: (在链表中增加附加头结点的版本) 创建一个空线性表 将链表置为空表 ... 阅读全文
posted @ 2018-04-23 21:13 main_c 阅读(116) 评论(0) 推荐(0) 编辑
摘要:0x00数据结构——C语言实现(单链表)/*filename:singly_linked_list.h*//* 单链表(singly linked list)是一种最简单的链表表示,也叫做线性链表。 用它来表示线性表时,用指针表示结点间的逻辑关系。 Functions... 阅读全文
posted @ 2018-04-23 21:09 main_c 阅读(150) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)求解困难问题求解困难问题NP完全问题不确定算法和不确定机不确定算法的抽象机模型不确定算法时间复杂度P类和NP类问题NP难度和NP完全问题Cook定理一些典型的NP完全问题小结随机算法基本概念近似算法基本概念绝对性... 阅读全文
posted @ 2018-01-10 10:53 main_c 阅读(813) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分枝限界法批处理作业调度问题描述设有n个作业的集合{0,1,⋯,n−1},每个作业有两个项任务要求依次在两台设备P1和P2上完成,ai和bi分别表示作业i在设备P1和P2上的处理时间。批处理作业调度... 阅读全文
posted @ 2018-01-10 10:52 main_c 阅读(285) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分枝限界法带时限的作业排序问题描述对于单机处理机的带时限作业排序问题,如果每一个作业具有相同的处理时间,则可以用贪心法求解。如果每个作业的处理时间允许不同,带时限的作业排序问题可描述为:设有n个作业... 阅读全文
posted @ 2018-01-09 11:11 main_c 阅读(581) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分枝限界法一般而言,回溯法的求解目标是在状态空间树上找出满足约束条件的所有解,而分枝限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出最优解。分枝限界法分枝限界法概述相关概念... 阅读全文
posted @ 2018-01-09 11:10 main_c 阅读(641) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-回溯法0/1背包问题描述回溯法求解限界函数0/1背包算法批处理作业调度问题描述设有n个作业的集合{0,1,⋯,n−1},每个作业有两项任务,要求分别在两台设备P1和P2上完成。每个作业必须现在P1上... 阅读全文
posted @ 2018-01-09 11:08 main_c 阅读(302) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-回溯法子集和数问题描述已知n个不同的正数wi(0≤i≤n−1)的集合,求该集合的所有满足条件的子集,使得每个子集中的正数之和等于另一个给定的正数M。回溯法求解对于子集和数问题问题,可采用两种不的解结... 阅读全文
posted @ 2018-01-09 11:07 main_c 阅读(384) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-回溯法回溯法是比贪心法和动态规划法更一般的方法,回溯法是一种通过搜索状态空间树来求问题的可行解或最优解的方法。回溯法使用约束函数和限界函数来压缩需要实际生成的状态空间树的结点数,从而大大节省问题的求... 阅读全文
posted @ 2018-01-09 11:06 main_c 阅读(1149) 评论(0) 推荐(0) 编辑
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-动态规划法流水作业调度问题描述假定处理一个作业需要执行若干项不同类型的任务,每一类任务只能在某一台设备上执行。设一条流水线上有n个作业J={J0,J1,⋯,Jn−1}和m台设备P={P1,P2,⋯,... 阅读全文
posted @ 2018-01-09 11:05 main_c 阅读(540) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示