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
算法导论——python实践
第二部分--排序和顺序统计学-第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
python实践
:统计一个文本中单词频次最高的10个单词?
#统计一个文本中单词频次最高的10个单词?importreclassSolution():defMaxWord(self,file_name):""":paramfile_name:文件名:return:"""withopen(file_name,'r')asfile:forlinesinfile:lines=re.sub('\W+','',lines)print(lines)dict_word=
苍风
·
2020-08-25 15:49
PYTHON编程实践
西刺网爬虫-
python实践
本次引入了多进程和异常捕捉的概念,python实现的并行程序有很多需要注意的地方,初学者如我也是研究了许久,才下得手。这次的代码只是简单的应用,并行爬虫的优势大家可以自行度娘谷哥。选取西刺网主要为后期建立代理池做个储备。BTW,多进程下异常捕捉也是个需要我们关注的点,要好好学习钻研!importrequestsfrombs4importBeautifulSoupfrommultiprocessin
极致简洁
·
2020-08-25 14:56
动态规划方法步骤
(
算法导论
中文版第三版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
架构设计
算法导论
程序15-计数排序(Python)
计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。计数排序的基本思想是:对每一个输入元素x,确定小于x的元素个数。利用这一信息,就可以直接把x放到它在输出数组中的位置上了,例如,如果有17个元素小于x,则x就应该在第18个输出位置上,当有几个元素相同时,这一方案要略做修改。因为不能把它们放在同一个输出位置上。假设输入是一个数组A[0...n-1],A.length=
夜空霓虹
·
2020-08-24 05:18
算法导论
《
算法导论
》 上的计数排序
#include#includeusingnamespacestd;constintMaxN=40;voidcounting_sort(intA[],intB[],intk)...{intC[MaxN];//for(inti=0;i=0;j--)...{B[C[A[j]]-1]=A[j];C[A[j]]=C[A[j]]-1;}//对于每个A[j],值C[A[j]]即为A[j]在输出数组中的最终位置
yshuise
·
2020-08-24 05:31
C++&&算法&&设计模式
算法导论
— 8.3 基数排序
笔记基数排序的做法为:对一组输入整数,先按最低位数字排好序,然后按次低位数字排好序,如此迭代,直至最后一步按最高位数字排好序,此时所有输入数据已排好序。基数排序要求对单个数字采用的排序算法是稳定的。以十进制数为例,基数排序算法先按个位数字排序,然后按十位数字排序……直至最后按最高位数字排序。下图给出了一个例子。下面给出基数排序的伪代码。在下面的代码中,我们假设输入数组AAA包含nnn个ddd位数,
yangtzhou
·
2020-08-24 05:17
算法导论
算法导论
程序16--基数排序(Python)
基数排序:首先按照最低有效位进行排序,最低位优先(LeastSignificantDigitfirst)法,简称LSD法:先从kd开始排序,再对kd-1进行排序,依次重复,直到对k1排序后便得到一个有序序列。importmathdefsort(a,radix=10):"""a为整数列表,radix为基数"""K=int(math.ceil(math.log(max(a),radix)))#用K位数
夜空霓虹
·
2020-08-24 05:13
算法导论
算法导论
-计数排序
计数排序并不基于元素的比较,而是一种利用数组下标来确定元素正确位置的算法。计数排序的核心在于将输入的数据值转化为键值存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序算法的时间复杂度O(n+k)(k为整数的范围)。简单描述就是,在一个有确定范围的整数空间中,建立一个长度更大的数组,如当输入的元素是n个0到k之间的整数时,建立一个长度大于等于k的数组。该数组的每一个下标位置的值代表了
PETERMAOSX
·
2020-08-24 04:27
C/C++
算法
《
算法导论
》——计数排序
《
算法导论
》——计数排序计数排序是一个非基于比较的排序算法,该算法于1954年由HaroldH.Seward提出。
我是大龙啊
·
2020-08-24 04:08
计数排序
算法导论
——基数排序(基于计数排序)
2019独角兽企业重金招聘Python工程师标准>>>/***基数排序(低位优先算法)基于计数排序**时间复杂度为O(d*(n+max)),较快排速度更快。但需要额外内存,所以是非原地排序。如果内存吃紧,还是采用快排比较适合*/@TestpublicvoidradixSort(){String[]dates={"20150121","20130122","20150215","20140922",
weixin_33995481
·
2020-08-24 03:43
算法导论
第三版--计数,基数排序
计数,基数的中文读音都一样,这翻译的人还嫌我们计算机不够乱,真的想吐槽。不管了,毕竟代码还是不一样的。1、计数排序(countersort):通过一个上限来统计集合里的数值(或者其他非数值类型映射的数值),并累计比小于自己(包括)的数值的统计的个数,从而形成排序的索引(也就是前面有多少个小于我的,我的位置就确定了)。普通计数排序代码:(仍需优化,valuetype默认是整数类型)1template
weixin_30896763
·
2020-08-24 03:30
《
算法导论
》读书笔记--顺序量选择
在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。求数组A[p..r]的第i个顺序量:RADOMIZED_SELECT(A,p,r,i)1ifp==r2returnA[p]3q=RANDOMIZED_PARTITION(A,p,r)//随机化的快速插入排序,与插入排序不同的是,其“主元”的下标是调用random在区间内随机产生,根据返回值p分组4k=q-p+1//k的值为q在数
刚入行的小白
·
2020-08-24 02:38
算法
《
算法导论
》读书笔记--快速排序
快速排序是最坏情况时间复杂度为O(n²),最优时间复杂度为O(nlgn),平均时间复杂度为O(nlgn)。最坏情况出现在每一层划分子问题时,分别包含了n-1个元素和0个元素,此时的时间复杂度为O(n²),与插入排序相同;在数组已经有序时其时间复杂度依旧为O(n²),此时插入排序的时间复杂度为O(n)。快速排序使用了分治思想,将数组A[p..r]划分为两个子数组A[p..q-1]和A[q+1..r]
刚入行的小白
·
2020-08-24 02:38
算法
【
算法导论
】基数排序
基数排序时间复杂度:O(n).基本思路:两个数比较大小,我们的直观感觉是先比较高位,若相同则比较低位。但是这样做需要记录额外的数据,浪费空间。而基数排序则是先比较低位,再比较高位。通过各个位的比较进行排序,如果数组元素最大有N位,则总共需要N次排序。注意:按位排序必须是稳定排序,所以在这我选择了计数排序。具体操作见下图:具体实现如下:#include#include#includevoidCoun
nineheaded_bird
·
2020-08-24 02:35
C/C++
算法
算法之道
【
算法导论
】计数排序
计数排序比较排序:通过元素间的比较对序列进行排序的算法称为比较排序。常见的比较排序算法有:冒泡排序法、插入排序法、合并排序法、快速排序法,堆排序法等等。任何比较排序法在最坏情况下的时间复杂度为O(nlogn)。因此,合并排序和堆排序是渐进最优的。非比较排序:用非比较的方法来进行排序的算法。常见的非比较排序算法有:计数排序法、基数排序法、桶排序法。它们都是以线性时间运行的。由于是非比较的,因此下界O
nineheaded_bird
·
2020-08-24 02:35
C/C++
算法
算法之道
【
算法导论
】第八章之基数排序
asdfaspackagecom.zhoujie;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.Random;importjava.util.TreeMap;publicclassRadixSort{publicstaticfinalintARRAY_LENGTH=10;publ
「已注销」
·
2020-08-24 02:00
Algorithm
算法导论
之第八章-计数排序
packagetest2018.test08;importjava.util.Arrays;/***Filename:Class9Jishupaixu.java*Description:计数排序前提是都是整数,而且有上限*例如:数组[9,5,3,1,9,7,5,0,4,3,5,6,7,8,1,7,8,9,2,0]*你统计出来0有2个,1有2个,2有1个…*所有可以得出结果第0至1位是0,第2至3位
孤竹彧
·
2020-08-24 01:31
笔记
机器学习-
Python实践
Day6(选择算法--算法评估矩阵(分类))
1、算法评估矩阵(分类)(PimaIndians印第安人医疗数据)1.1、分类算法矩阵1.1.1、分类准确度1.1.2、对数损失函数(Logloss)1.1.3、AUC图1.1.4、混淆矩阵1.1.5、分类报告(ClassificationReport)选择能够展示机器学习算法模型准确度的评估矩阵,是比较和选择算法模型最好的方式。分类和回归有不同的评估矩阵。1.1、分类算法矩阵1.1.1、分类准确
撸码小白
·
2020-08-24 01:04
机器学习
算法导论
第三版习题8.3
8.3-1(1)首先按最低位字母进行排序得到SEA,TEA,MOB,TAB,DOG,RUG,DIG,BIG,BAR,EAR,COW,ROW,NOW,BOX,FOX;(2)然后对次低位字母进行稳定排序得到TAG,BAR,EAR,SER,TEA,DIG,BIG,MOB,DOG,COW,ROW,NOW,BOX,FOX,RUG;(3)最后对首位字母进行稳定排序得到BAR,BIG,BOX,COW,DIG,D
obguy
·
2020-08-24 01:44
算法
算法导论
第八章 -- 计数排序
1.算法基本思想:对于在待排序的数组里面的数字,记录小于它的元素的个数,那么记录下来的这个数字就是它在输出数组里面的位置了这里假设元素是互异的。2.如果元素不互异,那么就要对算法里面的一个记录数组作一些操作,以便保持算法的正确性。代码如下:countSort.h#ifndefCOUNTSORT_H#defineCOUNTSORT_H#include#includestd::vectorcountS
Greetlist
·
2020-08-24 01:03
c++
algorithm
and
data
structure
算法导论
基数排序
#include#include#include#include#defineMAXLEN10typedefstruct{intkey;intvalue[MAXLEN];intlen;}SortType;voidprintA(inta[],intlen){for(inti=1;i=1;i--){intk2=a[i]%(int)pow(10.0,n);k2=k2/(int)pow(10.0,n-1)
万万岁
·
2020-08-24 01:03
算法导论
《
算法导论
》学习之基数排序
基数排序是一种非比较排序,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的时间复杂度为O(n),但是不一定优于O(nlgn),因为基数排序的时间复杂度前面有个系数K,如果K比较大的话,那其时间复杂度将超过O(nlgn)其具体原理如下:先前数值按位进行拆分,然后从低位开始,根据最低
lyapple2008
·
2020-08-24 01:00
算法导论学习
RSA模重复平方算法小示例
RSA模重复平方算法实现示例代码模重复平方算法编码实现的两种思路:2.1.先算高位再算低位2.2.先算低位再算高位本文参照《
算法导论
》做了些许尝试,发现matlab和C++都发生了超限情况。
jp_zhou256
·
2020-08-24 00:20
算法导论
【
算法导论
之四】计数排序
1.计数排序的思想我们之前接触过的例如:插入排序,归并排序,快速排序,堆排序等都是基于集合元素之间的比较这一基本的思想,它们执行的时间复杂度最优是趋于O(nlgn),而计数排序的运行机制不是基于集合元素之间的大小比较,什么???不做比较还能区分出元素之间的大小?是啊,算法就是这么伟大,我刚看它的时候也是激动不已呢。计数排序的基本思想是:对每一个输入元素x,确定出小于x的元素个数。有了这一信息,就可
Monkey_Online
·
2020-08-24 00:41
算法导论
算法导论
之计数排序
1.计数排序是一种非常快捷的稳定性强的排序方法,时间复杂度O(n+k),其中n为要排序的数的个数,k为要排序的数的组大值。计数排序对一定量的整数排序时候的速度非常快,一般快于其他排序算法。但计数排序局限性比较大,只限于对整数进行排序。计数排序是消耗空间复杂度来获取快捷的排序方法,其空复杂度为O(K)同理K为要排序的最大值。2.计数排序的基本思想为一组数在排序之前先统计这组数中其他数小于这个数的个数
fkyyly
·
2020-08-24 00:28
算法导论
算法导论
计数排序实现
算法导论
计数排序实现空间换时间,时间复杂度是线性的。
oj_fang
·
2020-08-24 00:55
算法导论
《
算法导论
》笔记 第8章 8.3基数排序
【笔记】基数排序按最低有效位数字进行排序。给定n个d位数,每一个数位可取k种可能的值。如果所用的稳定排序需要Θ(d(n+k))的时间正确地堆这些数进行排序。给定n个b位数和任何正整数r<=b,如果采用稳定排序需要Θ(n+k)时间,那么RADIX-SORT能在Θ((b/r)(n+2^r))时间内正确的对这些数进行排序。【练习】8.3-1示出基数排序RADIX-SORT作用于下列英语单词上的过程:"C
cyendra
·
2020-08-24 00:05
算法导论
算法导论
------------计数排序and基数排序
计数排序假设n个输入元素中的每一个都介于0和k之间的整数,k为n个数中最大的元素。当k=O(n)时,计数排序的运行时间为θ(n)。计数排序的基本思想是:对n个输入元素中每一个元素x,统计出小于等于x的元素个数,根据x的个数可以确定x在输出数组中的最终位置。此过程需要引入两个辅助存放空间,存放结果的B[1...n],用于确定每个元素个数的数组C[0...k]。算法的具体步骤如下:(1)根据输入数组A
后打开撒打发了
·
2020-08-24 00:11
算法导论
上一页
15
16
17
18
19
20
21
22
下一页
按字母分类:
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
其他