E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【算法导论】
算法导论
--贪心算法与动态规划(活动选择问题)
活动选择问题有一个教室,而当天有多个活动,活动时间表如下:找出最大兼容活动集!活动已按结束时间升序排序.动态规划采用动态规划需要满足两个条件:1.最优子结构2.子问题重叠令Sij表示在ai结束后和aj开始前活动的集合,假定Aij为活动集合Sij的最大兼容子集,其中包含活动ak。问题变成求Sik与Skj最大兼容活动子集Aik与Akjz。我们用c[i,j]表示Sij的最优解的大小。则c[i,j]=c[
勿在浮砂筑高台
·
2020-09-10 15:45
Algorithm
算法导论--学习笔记
算法与数据结构学习资源整理
在此列出给大家作为参考1.书籍:各种算法相关的书籍及其豆瓣评分(2019年3月16日)入门:《算法图解》8.4分《大话数据结构》7.9分经典:《数据结构与算法分析》9.0,有三个版本:java描述、c描述和c++描述《
算法导论
ThomasCT
·
2020-09-10 12:39
算法与数据结构
动态规划经典教学题,上过《算导》的应该都会
相信上过
算法导论
这门课的同学一定
TechFlow
·
2020-09-10 12:05
LeetCode
算法
“4年了,你还是没有啃完《
算法导论
》”
本文力荐|28天玩转算法训练营02期首图|何塞·维莱加斯·科尔德罗编辑|林瑟程序员都知道的三本算法书《算法》、《
算法导论
》、《算法图解》,但真正能读完的人少之又少。
csdn大数据
·
2020-09-10 12:28
算法导论
第八章线性时间排序课后答案
8.1排序算法的下界8.1-1在一颗比较排序算法的决策树中,一个叶结点可能的最小深度是多少?最少进行n-1次比较,所以深度最小是n-18.1-2不用斯特林近似公式,给出lg(n!)的渐近紧确界,利用A.2节介绍的技术来求累加和∑lgk.∫(lgk)dk=klgk-∫kd(lgk)=klgk-(1/ln2)k所以∑lgk=(nlgn-1lg1)-(1/ln2)(n-1)=nlgn-(1/ln2)(n
Flammable_ice
·
2020-08-26 16:36
《算法导论》
算法导论
— 8.2 计数排序
笔记假设输入的nnn个元素中的每一个都是在000~kkk内的一个整数。kkk表示了输入元素所处的范围。一般在kkk远小于nnn时,可以采用计数排序算法。计数排序的基本思想是:对每一个输入元素xxx,确定小于xxx的元素个数。利用这一信息,可以直接把xxx放到正确的位置。例如,如果有171717个元素小于xxx,则x就应该放在第181818个位置上。以下为计数排序的伪代码。假设输入数组为A[1..n
yangtzhou
·
2020-08-26 16:34
算法导论
算法导论
基数排序 习题8.3-4
问题:在O(n)时间内,对0到n^3-1区间内的n个整数进行排序思路:线性时间,考虑使用基数排序,基数排序时间为,要使时间为O(n),,即k=n,即把每个整数写成3位n进制数代码:#include#include#include#includeusingnamespacestd;//基于计数排序的n个数根据第i为排序voidCountSort(int*A,int*B,intn,intk){int*
臻舍
·
2020-08-26 16:52
算法导论
算法导论
8-4
问题:n个红色水壶和n个蓝色水壶,相同颜色水壶可盛的水都不一样多,但每一个红色水壶都有一个对应的蓝色水壶,二者可盛的水一样多。不同颜色的水壶可以互相比较判断可盛的水是否一样多。但是相同颜色的水壶不能相互比较。设计一个随机算法,其期望的比较次数为O(nlgn).思路:红色水壶和蓝色水壶比较,可在找到与其容量一样多的蓝色水壶的同时将剩下的蓝色水壶分为两组:容量比它大的和容量比它小的;利用找到的相同容量
臻舍
·
2020-08-26 16:21
算法导论
图论(三) -- 最短路径基础
那么这个系列也许久没有更新今天与大家谈论的是经典的最短路径问题1.先提出需要记住的概念方便后面的理解,许多内容参考
算法导论
以及eric的视频1.最短路径的表示2.路径权值和3.图的表示4.源点使用的记号
玉界尺
·
2020-08-26 15:32
图论
算法导论
笔记:25所有节点对的最短路径问题
本章考虑在给定的有向加权图G=(V,E),对于所有的节点u,v∈V,找到一条从节点u到节点v的最短路径。希望以表格的形式表示输出:第u行第v列给出的是节点u到节点v的最短路径权重。对于这个问题,如果是运行|V|次单源最短路径算法来解决所有节点对的最短路径问题,每一次使用一个不同的节点做为源节点。如果所有边的权值是非负的,可以采用Dijkstra算法。如果采用数组来实现最小优先队列,算法的运行时间为
weixin_30653023
·
2020-08-26 15:08
算法导论
习题24.1-4&24.1-5&24.1-6 (Bellman-Ford算法的变形)
24.1-4,问题描述:对Bellman-Ford算法进行修改,对任意顶点v,当从源点到v的某些路径上存在一个负权回路,则置d[v]=负无穷。24.1-5,问题描述:设G=(V,E)为一带权有向图,其权函数w:E->R。请给出一个O(VE)时间的算法,对每个顶点vinV,找出所有uinV中到达v点的路径的最短路径的值。24.1-6,问题描述:假定一加权有向图G=(V,E)包含一负权回路。请给出一个
weixin_30555753
·
2020-08-26 14:57
【
算法导论
】单源最短路径之Bellman-Ford算法
单源最短路径指的是从一个顶点到其它顶点的具有最小权值的路径。我们之前提到的广度优先搜索算法就是一种无权图上执行的最短路径算法,即在所有的边都具有单位权值的图的一种算法。单源最短路径算法可以解决图中任意顶点间的最短路径。对于单源最短路径问题,一般有两种经典解法:1.对于有权值为负的图,采用Bellman-Ford算法;2.对于权值全为正的图,常采用Dijkstra算法。本文介绍Bellman-For
nineheaded_bird
·
2020-08-26 14:35
C/C++
算法
算法之道
第二部分--排序和顺序统计学-第6章--优先级队列
说明:该系列博客整理自《
算法导论
(原书第二版)》,但更偏重于实用,所以晦涩偏理论的内容未整理,请见谅。另外本人能力有限,如有问题,恳请指正!
黑夜0411
·
2020-08-26 14:15
树的直径
树的直径(最长路)的详细证明两次BFS求树的直径(
算法导论
22.2-7)#include#include#include#include#include#includeusingnamespacestd
秦艺丹
·
2020-08-26 14:12
算法导论
第三版习题8.1
8.1-1最小深度为n−1,就像插入排序最好的情况一样,对已经排序好的序列排列的情况。8.1-2∑k=1nlgk≤∑k=1nlgn=nlgn所以,lg(n!)=O(nlgn).∑k=1nlgk=∑k=1n/2lgk+∑k=n/2+1nlgk≥∑k=n/2+1nlgk≥∑k=n/2+1nlg(n/2)=n2lgn2=n2lgn−n2lg2所以lg(n!)=Ω(nlgn).故lg(n!)=Θ(nlgn
obguy
·
2020-08-26 13:53
算法
算法导论
第三版习题8.4
8.4-1(1)首先n=A.length=10,然后让B[0...9]分别为一个空链表;(2)遍历数组A,将数组A中每一个元素A[i]都加到链表B[⌊nA[i]⌋]中,得到B[0]=∅,B[1]={0.13,0.16},B[2]={0.20},B[3]={0.39},B[4]={0.42},B[5]={0.53},B[6]={0.64},B[7]={0.71,0.79},B[8]={0.89},B
obguy
·
2020-08-26 13:53
算法
算法导论
第三版习题8.2
8.2-1(a)首先通过第4到第5行,数组C={2,2,2,2,1,0,2},然后经过第7行到第8行,数组C={2,4,6,8,9,9,11}。(b)然后根据第10行到第12行,我们有首先B[C[A[11]]]=B[6]=2,此时C={2,2,2,2,8,9,9,10}。然后经过循环可以分别得到B[8]=3,B[3]=1,B[4]=1,B[11]=6,B[2]=0,B[9]=4,B[7]=3,B[
obguy
·
2020-08-26 13:53
算法
算法导论
思考题 8-4
写一下我的思路,大概是对的,详细证明不出来。设蓝色水壶为A,红色为B先取一个A1,对所有的B做一次比较,可以将B分为两个部分,一部分大于A1,一部分小于A1再取一个A2,将B分为三个部分再取A3,将B分为四个部分......假设现在B被分成了k个部分,B1,B2,B3......BK,每次取Ai,都从B集合的一半处开始比较,比如第一次从K/2处开始如果小于该部分所有元素,则向前移动,从K/4处开始
万万岁
·
2020-08-26 13:17
算法导论
算法导论
练习题 10.4-5
typedefstructTree{intkey;Tree*p;Tree*left;Tree*right;}TN,*TNP;voidtrav(TNProot){TNPt=root;while(t){//向下走的过程,优先左子树if(t->left){t=t->left;}//同样是向下走的过程,该节点无左子树,就访问自身节点,继续找右子树elseif(t->right){printf("%d",t
万万岁
·
2020-08-26 13:17
算法导论
算法导论
练习题 8.1-4
intcountArea(inta[],intk,intlen,intstart,intend){if(start>end)return0;int*c=(int*)malloc((k+1)*sizeof(int));inti,j;for(i=0;i<=k;i++){c[i]=0;}for(i=1;i<=len;i++){c[a[i]]++;}for(i=1;i<=k;i++){c[i]+=c[i-
万万岁
·
2020-08-26 13:17
算法导论
《
算法导论
》第六章堆排序代码实现
intparent(constint&root){returnroot/2;}intleft(constint&root){returnroot*2;}intright(constint&root){returnroot*2+1;}voidmax_heapify(vector&nums,inti,constint&heap_size){intlargest;while(inums[i])large
MrTimber
·
2020-08-26 13:38
算法导论
习题9.3-8
两个已排序的数组,个数相同且都为n,求在lgn时间内求出两数组共同的中位数。思路:分别求出两数组的中位数mid1,mid2,如果相等则即为所求中位数,如果mid1usingnamespacestd;//找出下标从p到r范围之间的中位数intFindMid(inta[],intp,intr){intlength=r-p+1;intmid=(length+1)/2;returna[p+mid-1];}
liuzhanchen1987
·
2020-08-26 13:37
算法导论
算法导论
习题8.3-4
对0到n^2-1范围内的数字进行排序,要求时间复杂度为O(n)。可以直接采用基数排序法对其排序,但是这些数字为已知范围,所以有更进一步的优化,即将所有的数字转换成n进制,这样这些数在n进制下只有两位,即只需要比较2O(n)即可。转换成n进制消耗2O(n),所以对于比较的数字为四位以上时,该算法较普通的基数排序有优势。具体代码如下:修改:此处的插入排序应该改为计数排序。因为插入排序时间复杂度太高//
iteye_5282
·
2020-08-26 12:48
算法导论
(第三版)练习 4.1-1 ~ 4.1-5
4.1-1返回数组的首个元素4.1-2最大子数组问题(js描述)4.1-3应该会吧..4.1-4基本保持原有代码不变,在最后增加一次判断ifresult.sum<0thenresult.sum=0并设置结果数组为空4.1-5最大子数组问题(js描述)转载于:https://www.cnblogs.com/xkxf/p/9745685.html
bangtuo9862
·
2020-08-26 12:36
《
算法导论
》 8.2 计算排序
计数排序的基本思想就是对每一个输入元素x,确定出小于x的元素个数。有了这一信息,就可以把x直接放到它在最终输出数组中的位置上。例如,如果有17个元素小于x,则x就属于第18个输出位置。当有几个元素相同时,这个方案要略做修改,因为不能把它们放在同一输出位置上。在计数排序算法的代码中,我们假定输入是个数组A[1..n],length[A]=;n。另外还需要两个数组:存放排序结果的B[1..n],以及提
Heaven13483
·
2020-08-26 11:32
算法导论
算法导论
8.2-4习题解答(计数排序)
CLRS8.2-4:在O(1)的时间内,回答出输入的整数中有多少个落在区间[a...b]内。给出的算法的预处理时间为O(n+k)算法思想:利用计数排序,由于在计数排序中有一个存储数值个数的临时存储区C[0...k],利用这个数组即可。#includeusingnamespacestd;//通过改编计数排序而来,因为有些部分需要注释掉voidcounting_sort(int*&a,intlengt
weixin_33859844
·
2020-08-26 11:39
算法基础:6种经典排序算法的递归和非递归实现
本文的算法实现主要参考两本书:《
算法导论
》《大话数据结构》接口#ifndef_SORT_H#define_SORT_H#definetrue1#definefalse0typedefintbool;typedefintelem_t
wuzhiguo
·
2020-08-26 08:51
第二部分--排序和顺序统计学-第8章--线性时间排序
说明:该系列博客整理自《
算法导论
(原书第二版)》,但更偏重于实用,所以晦涩偏理论的内容未整理,请见谅。另外本人能力有限,如有问题,恳请指正!
黑夜0411
·
2020-08-26 06:17
数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
本文主要包括以下内容:什么是2-3树2-3树的插入操作红黑树与2-3树的等价关系《算法4》和《
算法导论
》上关于红黑树的差异红黑树的5条基本性质的分析红黑树与2-3-4树的等价关系红黑树的插入、删除操作JDKTreeMap
Chiclaim
·
2020-08-25 17:24
数据结构与算法
Android
经典算法研究系列:五、红黑树算法的实现与剖析
红黑树算法的层层剖析与逐步实现----作者July二零一零年十二月三十一日本文主要参考:
算法导论
第二版本文主要代码:参考
算法导论
。本文图片来源:个人手工画成、
算法导论
原书。
dinongxu8804
·
2020-08-25 17:36
动态规划方法步骤
(
算法导论
中文版第三版P212)
zoFish
·
2020-08-25 12:12
算法导论学习笔记
《
算法导论
》学习笔记之Chapter10---数据结构之链表
链表定义:链表是这样一种数据结构,其中的各对象按线性顺序排列,与数组的线性顺序由下标决定不同,链表的顺序是由各个对象里的指针决定。链表分为:单向链表,双向链表,还有循环链表。链表支持的操作有:查找Search;插入Insert;删除Delete;双向链表的查找操作就是从表头开始对比查找,很简单;插入操作,是根据插入的数据的指针属性来寻找要插入的位置;之后修改相关元素的pre和next指针属性即可;
yingchenwy
·
2020-08-25 08:48
算法导论笔记
improved partition in quick sort
originalsolution参考
算法导论
实现的分组算法intpartition(vector&nums,intp,intr){intx=nums[r];ints=p-1;//thelastsmallerfor
蜗牛一步一步往上爬
·
2020-08-25 06:34
algorithm
啊哈!算法读书笔记 | 第一章 排序
序论:感觉
算法导论
这本书目前不怎么适合我这样的菜鸟。于是在网上开始了解到《啊哈!算法》这本书,这本书确实很简单,比我大二学的《数据结构与算法分析》要简单的多,这门课我考了80多分。
chovel
·
2020-08-25 04:06
算法
MIT:
算法导论
——10.平衡搜索树-红黑树
【红黑树】是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的【颜色】,可以是RED或BLACK。红黑树保证没有一条路径会比其他路径长出2倍,因而是近似【平衡】的。【树中结点的5个属性】color、key、left、right和p。一棵红黑树满是足下面【红黑性质】的二叉搜索树:(1)每个结点是红色或是黑色。(2)根结点和每个叶节点(NIL)是黑色的。(3)每个红色结点有黑色父节点。或者说每
我与编程有个约定
·
2020-08-25 03:24
数据结构与算法
归并算法的优化 //
算法导论
实现笔记
今天看的这节课,开头他就说fullofmathmatics,没有任何有关算法的东西。所以没什么是可以去实现的,听英语版的数学课对我来说有点难度。就把昨天写的归并优化一下吧,昨天写的归并其实不是一个特别好的版本,用了很多额外空间和没必要的操作,今天断断续续改了很多个版本,最后一个版本看上去还不错。首先要做的就是把DeepCopy优化一下,deepCopy是一个O(n)的函数,虽然和mergeArra
Sczlog
·
2020-08-25 00:10
算法导论
第十一(11)章散列(Hash)表
11.1直接寻址表关键字集合U={0,1,...,m-1},实际的关键字集合K。用一个数组T[0..m-1],其中每个位置对应U中的一个关键字k。把关键字k映射到槽T(k)上的过程称为散列。散表表仅支持INSERT、SEARCH、DELETE操作。11.1-1假设一动态集合S用一个长度为m的直接寻址表T表示。请给出一个查找S中最大元素的过程。你所给的过程在最坏情况下的运行时间是多少?查找指定元素所
Flammable_ice
·
2020-08-25 00:06
《算法导论》
算法导论
(四)——哈希表&平摊分析
算法导论
(四)——哈希表&平摊分析1.背景:symbol-tableproblem(tableSholdingnrecords),执行操作插入,删除,搜素。
lymcool
·
2020-08-24 23:30
算法导论
算法导论
例程——哈希表
哈希表(hashtable)是普通数组概念的推广,对于一个比较小的规模的数据,我们对其存储采用的是将其存在一个等规模的数组中,并且直接根据数组下标对其进行寻址,这被称为直接寻址法。而当数据规模增大到一定程度时,我们采用直接寻址法进行遍历时会打打加重程序的时间复杂度,而一种理想的解决办法就是根据数据的某一关键字(这里假设数据元素含有其他卫星数据,这在实际问题中是很常见的)动态的分配存储空间,将数据所
CFhM_R
·
2020-08-24 21:22
算法导论
速成算法笔记,Github上已收获近60K+star!力压LeetCode只为面试
《吃透算法套路——只为面试》GitHub连续霸榜首页数周,star即将突破60k,受欢迎程度可见一斑:文档的作者最先提出「刷题要掌握模板和套路」的观点,刷题就是应对面试拿offer,再别整什么《
算法导论
Jav进阶道路
·
2020-08-24 18:01
8种主要排序算法的C#实现
老早就买了《
算法导论
》,一直都没啃下去。这本书确实很好,只是太难读了,总是读了几章就又读不下去了!工作上也几乎用不到。我这段时间发现看这些排序算法比以前容易了很多,就借此机会将它们整理总结起来。
weixin_33691700
·
2020-08-24 17:08
ARTS-第一周
Algorithm这周末想做算法题一直碰壁,还是找不到入手的地方,上学的那点东西基本上班几年直接刷题有些难度,看《
算法导论
》学习梯度又大。反思一下,其实少即是多,学习本就是逆人性的事
梧上擎天
·
2020-08-24 15:12
二叉搜索树;二叉查找树;二叉排序树;binary search tree
一:二叉搜索树的定义他的定义与树的定义是类似的,也是一个递归的定义:1、要么是一棵空树2、如果不为空,那么其左子树节点的值都小于根节点的值;右子树节点的值都大于根节点的值3、其左右子树也是二叉搜索树在
算法导论
中的定义
jiqiren007
·
2020-08-24 14:17
算法实战-OJ之旅
SortArrayByParityeasyAC-17ms.按照《
算法导论
》排序一章的一些概念,第二种可以称为是原址的(in-place)。
ReentrantSucc
·
2020-08-24 13:36
算法导论
学习笔记——2.3.1分治法——习题2-4逆序对数
前两天做树状数组和线段树专题时碰到过当时的做法如下思路:从前往后读,读一个数x,让a[x]+=1,然后让ans+=∑(i=x+1…n)a[i],这个地方用线段树或者树状数组优化降低时间复杂度为lgn再优化方法:离散化时间复杂度o(nlgn)学习了分治法后,发现分治法的时间复杂度也是o(nlgn)当然这里也能用离散化优化分治法代码#includeusingnamespacestd;typedeflo
so vegetable I am
·
2020-08-24 07:05
算法导论
算法导论
学习笔记——动态规划
本文系转载,原文地址:http://www.cppblog.com/Fox/archive/2008/05/07/Dynamic_programming.html以前在学习非数值算法的时候,曾经了解过动态规划算法(Dynamicprogramming),以下是对Wikipedia上动态规划的翻译,图也是Wikipedia上的,仓促行文,不到之处,请方家指正。这篇文章的术语实在是太多了,所以我在文中
FG2006
·
2020-08-24 07:58
数据结构与算法
【
算法导论
学习-012】n个数随机等概率的抽样m个
算法法导论》P129页课后题5.3-7supposewewanttocreatearandomsampleoftheset{1,2,3,…,n},thatis,anm-elementsubsetS,where0≤m≤n,suchthateachm-subsetisequallylikelytobecreated.OnewaywouldbetosetA[i]=ifori=1,2,3,…,n,call
只想瞪你一眼~
·
2020-08-24 07:03
《算法导论》学习
HDU 1503 Advanced Fruits 最长公共子串应用(LCS算法应用)
LCS算法轨迹,来自
算法导论
importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.InputStreamReader
TinyDolphin
·
2020-08-24 06:54
算法导论
笔记——水桶排序(基数排序)
这次是计数排序的升级版,若是计数排序还没有搞懂,先去看看我的前一篇。计数排序是用空间换时间的算法,若k太大,它的效率会下降很快,而且会消耗很多内存,所以通常是在重复的元素很多,且跳跃不太大的情况下使用。废话不多先上代码:importmathdefbucketsort(A,maxValue):#采用二进制分组,比10进制分组更精确#step1得到maxValue的二进制位数nstr=bin(maxV
失控的Tierra
·
2020-08-24 05:40
算法
python
在服务器上排除问题的头5分钟
前言之前导师给我推荐了这篇文章,当时不以为然(ps:当时沉迷
算法导论
写ACM),现在包括从校招的情况来看,还是要走运维的路线,所以记录学习一下,而且在阿里面试系统工程师的时候,也被星芒师兄问到了这个问题
低调小一
·
2020-08-24 05:13
架构设计
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他