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
【算法导论】
【
算法导论
学习笔记】---选择算法
找到数组中某个特定大小顺序的数,比如第i小的数随机选择算法:RANDOMIZED-SELECT期望运行时间为:O[n]思想:借助快速排序的想法,将数组划分为两部分(比x大和比x小),不同的是我们只需要去关注一部分。快速选择算法:SELECT最坏运行时间:O[n]思想:中位数的中位数,将数组分为5组(实际上只要组数大于等于5都是可以的,若小于5,运行时间就不是线性的了)应用:我们可以将快速选择算法应
qingkong1994
·
2020-09-12 13:55
算法导论学习笔记
MIT
算法导论
-第五讲-线性时间排序
在比较排序算法中,在最坏情况下,都需要做Ω(nlgn)此比较。合并排序和堆排序以及随机快速排序平均情况和最坏情况下达到O(nlgn),因此合并排序和堆排序以及随机快速排序是渐进最优的。1.决策树的概念及如何用决策树确定排序算法时间的下界在比较排序算法中,用比较操作来确定输入序列《a1,a2,……,an》的元素间次序。决策树是一棵完全二叉树,比较排序可以被抽象视为决策树。在决策树中,节点表示为i:j
清文
·
2020-09-12 13:54
算法导论
麻省理工学院《
算法导论
》(MIT - Introduction to Algorithms)
关于课本的介绍如下:本书自第一版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考手册。本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。各章内容自成体系,可作为独立单元学习。所有算法都用英文和伪码描述,使具备初步编程经验的人也可读懂。全书讲解通俗易懂,且不失深度和数学上的严谨性。第二版增加了新的章节,如算法作用、概率分
nancy_princess
·
2020-09-12 13:35
matlab
PR&Image
Processing
算法导论
梳理(一)
算法导论
这本书,断断续续看了很久也只看了三分之一左右。近来又忙于别的方面的事情,把这本大部头搁置了很久,于是决定写上几篇来帮助自己梳理回忆一下。
lzkmylz
·
2020-09-12 13:37
算法导论
MIT:
算法导论
——5.线性时间排序:计数排序、基数排序以及桶排序
注:教材《
算法导论
》第8章线性时间排序一、决策树模型分析排序算法下界O(nlgn)定理:在坏情况下,任何比较排序算法都需要做Ω(nlgn)次比较。
我与编程有个约定
·
2020-09-12 13:59
数据结构与算法
算法导论
散列表 11.1答案以及乘法散列法
今天是开通博客后第一次做
算法导论
习题呢。。。首先是
算法导论
散列表11.1的答案。
loiecarsers
·
2020-09-12 13:27
算法导论
算法导论
hash
散列表
数据
博客
MIT
算法导论
第二节笔记
本节主要讲了一些算法分析的内容4种渐近符号求解递归式的三种方法:(P38)1.代换法(通常可以)2.递归树方法(对所有都可以,但不严谨)3.主方法-主定理(只对特等的递归式有效,包含三种情况)
liyinchen808
·
2020-09-12 13:53
程序员之路
算法
MIT
算法导论
第一节笔记
算法分析——研究性能和资源利用的算法设计什么比性能更重要?为什么要学习算法?1.解决最前沿的东西(重复十年前的东西,一般不需要算法);2.是更好用户体验的基础,更好安全性的保障;3.性能是最底层的东西,相当于“货币”;4.有趣。伪代码的好处:使算法描述简洁,易书写。三种算法分析:最坏时间分析——运行的上界,用户承诺时间平均时间分析(需要假设统计分布)最好时间分析——没什么用渐近分析:去掉与机器相关
liyinchen808
·
2020-09-12 13:53
程序员之路
算法
算法导论
:快速排序
快速排序的原理:1.选取一个元素q,术语叫做主元2.循环数组a,将数组分割成a[p...q-1](小于主元部分)和a[q+1....r](大于主元部分)两部分,中间位置即选取主元q排序后的的位置。3.循环迭代被分隔的数组即a[p...q-1]和a[q+1...r]继续重复1,2步骤,这样数组就变成一个有序的数组。伪代码如下:其中partition的过程如下:如图所示,其中浅阴影的部分是值不大于a[
来去之迹
·
2020-09-12 13:21
算法
数据结构
算法导论
之快排
算法导论
第七章是快速排序,很多公司面试得时候都可能会要求你手写快排。并且主要分析一下快排的时间效率O(nlogn),分析这一块我以后看懂了会慢慢补上,今天终于自己可以手写一个快排的算法了。
Li_GaoGao
·
2020-09-12 13:05
算法导论
学习总结-基础篇(一)
一、基础知识(概念)总结:1.渐进记号:(1).大O记号:大O记号给出函数的渐进上界。定义:O(g(n))={f(n):存在正常量c和n0,使得对所有n>=n0,有0=n0,有0=n0,都有00,存在常量n0>0,使得对所有n>=n0,有00andA[i]>keyA[i+1]=A[i]i=i-1A[i+1]=key简述:最好情况下,序列已经是有序排列的了,这种情况下,需要进行比较操作需(n-1)次
蓝天的IT生涯
·
2020-09-12 13:33
算法导论
算法导论
学习笔记-第七章-快速排序
第七章快速排序总结:这章讲了快速排序的算法,分析了算法复杂性,又讲了快速排序的随机版1.快速排序PARTITION(A,p,r)将A[p…r]进行就地重排,返回q,其中A[p…q-1]中的元素都小于A[q],A[q+1,…r]中的元素都大于A[q]。QUICKSORT(A,p,r)递归排序分析:最坏情况O(n^2)最好情况O(nlgn)平均情况O(n^2)伪代码PARTITION(A,p,r)xA
kindlucy
·
2020-09-12 13:59
算法学习
快速排序的溢出问题
今天自己写了个《
算法导论
》上的快速排序,出现了stackoverflow(栈溢出)的问题,经过排查,成功解决,特来分享,希望能帮到有类似问题的网友。
k91191
·
2020-09-12 13:26
算法
c
算法导论
递归
快速排序
算法导论
学习笔记之堆排序
一、堆概念(二叉)堆是一个数组,它可以看成一个近似的完全二叉树,树上的每个结点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充的它有这样的性质:对于给定一个结点的下标i,很容易计算得到它的父节点、左孩子、右孩子的下标:父节点下标:i>>1左孩子下标:i>1]>=A[i],而在最小堆中,则满足A[i>>1]A[i]largest=lelselargest=iifrA[larg
会编程の皮卡丘
·
2020-09-12 13:15
算法
算法导论
学习笔记之算法基础篇
文章链接:http://blog.csdn.net/jewangs/article/details/52424313一、插入排序插入排序属于原址排序,算法在数组A中重排元素,算法思想与玩扑克牌时依次将抓到的牌放到手中合适的位置一致,当输入完成时,手中的牌即已完成排序。插入排序(A)forj=2..A.lengthsetp=1//A下标从1开始计数key=A[j]i=j-1whilei>0&&A[i
会编程の皮卡丘
·
2020-09-12 13:15
算法
算法导论
小结-汇总
算法导论
小结(1)-插入排序及其扩展
算法导论
小结(2)-归并排序与快速排序的比较
算法导论
小结(3)-堆的使用
算法导论
小结(4)-三种非比较排序
算法导论
小结(5)-散列表
算法导论
小结(6)-二叉查找树
算法导论
小结
intrepyd
·
2020-09-12 13:37
算法导论
算法导论
第七章笔记
快速排序快速排序其实也是用到了分治算法的思想,快速排序采用双向查找的策略,每一趟选择当前所有子序列中的一个数为界限,将子序列中比界限小的前移,比界限大的后移,当本趟所有子序列都按上述规则划分完毕后将会得到新的一组更短的子序列,他们将成为下趟划分的初始序列集。这里的程序使用的是快速排序的随机版本,所以是输入数据的划分是比较平均的*时间复杂度:最坏情况:O(n^2)平均情况:O(nlog(n))#in
infinitysjy
·
2020-09-12 13:36
算法
快速排序
全球超过50万人阅读的算法圣经:《
算法导论
》第3版中文版出版
《
算法导论
(原书第3版)》前言在计算机出现之前,就有了算法。现在有了计算机,就需要更多的算法,算法是计算的核心。本书提供了对当代计算机算法研究的一个全面、综合的介绍。
hzbooks
·
2020-09-12 13:36
(1-1)新书快讯
(2-4)计算机科学丛书
算法导论
学习笔记 第七章 快速排序
分两部分讲:快速排序和随机化快速排序其中很多关于分析的部分并不怎么懂,所以先略过...快速排序快速排序的核心思想还是分治法。选取一个主元(一般选择第一个,或者是最后一个元素)递归的将整个数组分成两部分。而这个两部分的左边部分的元素全部小于等于主元,右边的部分大于主元。快速排序是稳定的排序,并且是原地排序,平均运行时间是nlogn。就像集合了归并排序和插入排序两者的优点下面以分治法的三步骤来分析快速
苏雅乐图
·
2020-09-12 13:15
Introduction
to
Algorithms
算法修炼之道:快速排序的C++实现
算法导论
版
MIT的课程,今天实现了个快速排序,开始的时候理解错了,晕死这个代码写起来挺快的,而且速度也是排序里面算是很快很快的了,所以叫做快速排序么:快速排序(Quicksort)是对冒泡排序的一种改进。由C.A.R.Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个
0x0101
·
2020-09-12 12:39
Programming
算法导论
(一)Peak Finding
算法导论
(一)PeakFinding问题描述有一个一维的向量,对于向量的中间位置元素来说,如果数值大于等于两边相邻位置元素的数值,则被认为是一个peak,对于向量边界位置元素来说,则只需大于等于一边相邻位置元素的数值就好
anne_bai
·
2020-09-12 12:01
算法导论
算法
【
算法导论
】快速排序实现
#ifndefQUICK_SORT_H#defineQUICK_SORT_H#defineQK_SORT#include#include#include"INSERTION-SORT.h"#ifdef_DEBUG#include#endif//_DEBUG////算法思路://每次都挑出一个数,并将比这个数小的数放在此数左边//将比这个数大的数都放在此数右边,于是一次划分就形成了//再递归的对划分
Velconias
·
2020-09-12 12:04
Algorithm/Data
Structure
C/C++
算法导论
--快速排序
《
算法导论
》里有很多快速排序的分析,在这里我们不做太多的数学分析,仅仅从直觉上来谈这个算法。不仅如此,《
算法导论
》里的Partitioning算法也和我之前在国内教材上看的不一样,而且更容易理解。
Mr_Fogg
·
2020-09-12 12:47
算法
日常记录:《
算法导论
》学习笔记之四—快速排序
《
算法导论
》第7章讲到了快速排序(quicksort),快速排序通常是用于排序的最佳的实用选择,因为其平均性能比较好。
Mr_Avin
·
2020-09-12 12:46
算法与数据结构
算法的二三事
算法
算法导论
多重对数函数快速理解-
算法导论
定义:lg*n=min{i>=0:lg(i)n<=1}lg*a=n2^2^...=alg(i)n=1lg*2=12^1=2lg(1)2=lg2=1lg*4=22^2=4lg(2)4=lg(lg(1)4)=lg(lg4)=lg2=1lg*16=32^2^2=2^4=16lg(3)16=lg(lg(2)16)=lg(lg(lg(1)16))=lg(lg(lg16))=lg(lg4)=lg2=1lg*6
Louis__lv
·
2020-09-12 12:12
算法导论
CM1 : 程序设计与
算法导论
程序设计与算法基础IICM1:程序设计与
算法导论
迷宫问题问题描述从出发点(入口)开始,在给定的空间中,沿可行的路径进行探索,直到达到目标(出口)。
代码Sh@@p
·
2020-09-12 12:08
程序设计与算法基础
数据结构
算法
迷宫
算法导论
第7章 快速排序 —— 练习还没做,记得补锅
今天来学习第七章——快速排序。作为占据一章的排序,快速排序可谓是重量级选手。实际排序中最好的选择,因为(1)其平均性能非常好,期望实践复杂度为O(nlgn);(2)可进行原址排序;(3)在虚拟环境中也能很好地工作。适用于基于随机的数据,因为其最坏情况时间复杂度为n^{2}。最坏情况即所有元素都一样。1.概念2.伪代码QUICKSORT(A,p,r)ifp
皮酱
·
2020-09-12 12:04
算法导论
java
算法导论
快速排序
算法导论
学习笔记(五):快速排序
快速排序是一种最坏情况运行时间为O(n*n),虽然这个最坏情况运行时间比较差,但快速排序通常都是用于排序的最佳的实用选择,这是因为其平均性能相当好:期望的运行时间为O(nlgn),且O(nlgn)记号中隐含的常数因子很小。另外,它还能够进行就地排序。快速排序和合并排序一样,采用的都是分治思想。快排中利用该思想解决步骤为:1、先从数组中取出一个数作为基数,基数的选择对排序效率的影响很大2、分区,将比
Bruce_Zeng
·
2020-09-12 12:16
数据结构/算法
算法导论学习笔记
MIT
算法导论
笔记(第一节课)
写在前面最近想复习一下算法与数据结构的知识,正好准备看看MIT的
算法导论
这门课。
zhc_24
·
2020-09-12 12:06
算法
算法导论
:快速排序
快速排序是基于分治策略的。对一个子数组A[p…r]快速排序的分治过程的三个步骤为:分解:数组A[p…r]被划分成两个(可能空)子数组A[p…q-1]和A[q+1…r],使得A[p…q-1]中的每个元素都小于等于A[q],且小于等于A[q+1…r]中的元素。下标q也在这个划分过程中进行计算。解决:通过递归调用快速排序,对子数组A[p…q-1]和A[q+1…r]排序。合并:因为两个子数组就是原地排序的
weixin_34414196
·
2020-09-12 12:41
MIT6.006Lec03:插入排序,归并排序,递归树
MIT6.006是
算法导论
课,Lec03主要讲插入排序,归并排序,以及分析方法(递归树)等。
weixin_33873846
·
2020-09-12 12:38
算法导论
笔记:07快速排序
1:快速排序快速排序的最坏情况时间复杂度为Θ(n^2)。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能很好。它的期望运行时间复杂度为Θ(nlgn),而且Θ(nlgn)中蕴含的常数因子非常小,而且它还是原址排序的。2:基本思想快速排序采用分治法进行排序,首先在数组中选择一个元素P,根据元素P将数组划分为两个子数组,在元素P左侧的子数组的所有元素都小于或等于该
weixin_30498921
·
2020-09-12 12:05
算法导论
学习笔记(七)- 快速排序
1快速排序概述快速排序是一个使用分治思想的排序算法,具有如下优点:1.算法的期望运行时间为θ(nlgn),且其中蕴含的常数因子较小,故而快速排序算法通常是实际应用中最好的选择。2.原址排序,排序过程中只需要有限个辅助空间。2算法描述快速排序通过分治的算法设计思想,借助关键子过程partition将输入(这里假定算法的输入为互异关键字key组成的整型数组)划分为比主元小和大的两部分,主元可以随机选择
edwards1130
·
2020-09-12 12:20
算法导论学习笔记
【
算法导论
】快速排序
快速排序快速排序的最坏运行时间为O(n2),虽然这最坏情况的时间复杂度比较大,但快速排序通常是用于排序的最佳实用选择,这是因为其平均性能相当好,平均时间复杂度为O(nlogn),并且O(nlogn)中的隐含常数因子很小。另外,它能够进行就地排序,因此在虚拟内存中也能较好的运行。快速排序算法的性能:其运行时间与划分是否对称有关,而是否对称与主元的选取有关。从渐进的意义上讲,如果对称,就和合并的算法一
nineheaded_bird
·
2020-09-12 12:19
C/C++
算法
算法之道
MIT的
算法导论
课程资料
MIT的
算法导论
第一节课上,教授就说得了算法的performance的重要性,并非简单的只是快一点,慢一点,而是整个解决方案可行与不可行的差别。
tangl_99
·
2020-09-12 12:47
随笔
学习和工作
算法与程序设计
MIT
算法导论
公开课之第7课 哈希表
符号表问题表S中有n条记录,每条记录都有一个键值,并且有其他的一些数据(卫星数据)。允许的操作:1.插入数据(S,x):S←S∪{x}2.删除数据(S,x):S←S-{x}3.查询数据(S,k):存在键值k对应的数据x,则返回x,否则返回nil(空值)。插入删除操作将S变为一个动态集合。直接映射表假设键值来自一个有m个元素的集合U{0,1,…,m-1},键值相互独立。建立数组T[0,…,m-1]来
rye_whiskey
·
2020-09-12 12:13
算法导论公开课笔记
算法导论
MIT
算法导论
-第四讲-快速排序
1.快速排序的描述快速排序算法采用的分治算法,因此对一个子数组A[p…r]进行快速排序的三个步骤为:(1)分解:数组A[p…r]被划分为两个(可能为空)子数组A[p…q-1]和A[q+1…r],给定一个枢轴,使得A[p…q-1]中的每个元素小于等于A[q],A[q+1…r]中的每个元素大于等于A[q],q下标是在划分过程中计算得出的。(2)解决:通过递归调用快速排序,对子数组A[p…q-1]和A[
清文
·
2020-09-12 12:48
算法导论
MIT:
算法导论
——4.2快速排序 以及 排序算法时间复杂度分析
【本课例子】(1)快速排序:分割算法①快速排序程序:QUICKSORT(A,p,r)ifp#includeusingnamespacestd;structLOC{intlow;inthigh;LOC&operator=(LOC&rhs){this->low=rhs.low;this->high=rhs.high;return*this;}};intpartion(inta[],intlow,int
我与编程有个约定
·
2020-09-12 12:36
数据结构与算法
红黑树的创建+线索化+性质检验+笔画输入法
本文红黑树的实现参考《
算法导论
》第二版。写此算法之前,发现网络上很多版本均存在这样那样的错误,于是就自己实现了一个,用于做中文输入法。《导论》2的算法描述省略了很多情况,故不能直接拿来用。
liyinchen808
·
2020-09-12 12:05
性质检验
算法
红黑树的创建
线索化
笔画输入法
输入法
中文输入法
红黑树
线索化
算法导论
学习笔记之快速排序
一、快速排序思想与归并排序类似,快速排序同样使用了分治思想:分解:数组A[p..r]被划分成2个可能为空的子数组A[p..q-1]和A[q+1..r]使得A[p..q-1]中的所有的元素都小于等于A[q]而且A[q+1..r]中的所有元素都大于等于A[q]计算下标q也是过程的一部分解决:递归的调用快速排序对子数组进行排序合并:快速排序是原址的,不需要合并操作二、快速排序算法快速排序(A,p,r)i
会编程の皮卡丘
·
2020-09-12 12:58
算法
麻省理工公开课《
算法导论
》学习笔记:第一讲
主题:简介课程,渐近概念的大局观,插入排序和归并排序,递归式函数时间分析(递归树方法)教材:《
算法导论
》收获:很感动地看到算法分析那个log(n)是为什么出现了,更深层还要听第二讲,若不是因为要准备SAS
dkyqe60682
·
2020-09-12 12:19
《
算法导论
》知识点总结
《
算法导论
》的学习路线:1.MIT网易公开课《
算法导论
》,授课老师也是《
算法导论
》书的作者之一。讲解的内容几乎围绕书籍,不过其中跳跃表和自组织表书中没有,并行算法和缓存参数无关算法还没看。
changfei_1995
·
2020-09-12 12:45
麻省理工《
算法导论
》课程笔记——第1课时
算法分析理论研究:是关于计算机程序性能和资源利用的研究。程序设计方面什么比性能更重要:正确性、简洁、可维护性、成本(时间成本、开销)、稳定性、健壮性、功能性、模块化、安全性、可扩展性、与用户友好性;这么多东西比性能更重要,我们为什么还要关注性能?通常性能的好坏决定是否可行。排序:插入排序:(伪代码)forj0andA[i]>keydoA[i+1]voidInsertionSort(int*num,
Rorschach罗夏
·
2020-09-12 12:00
算法导论
C/C++
算法导论
时间复杂度
归并排序
插入排序
MIT
算法导论
笔记
详细MIT
算法导论
笔记(网络链接)第一讲:课程简介及算法分析(Sheridan)第二讲:渐近符号、递归及解法(Sheridan)第三讲:分治法(1)(Sheridan)第四讲:快排及随机化算法(Sheridan
weixin_30258027
·
2020-09-12 12:53
MIT
算法导论
第四节笔记——快速排序
快速排序是基于分治思想的一种原地排序,但其效率依赖于输入数据的排序状况。视频中分析了最好情况,最差情况,以及最好最差交替出现的情况。研究表明:数据划分为1:9和5:5效率上市一个数量级;最好和最差交替的情况和趋向于最好。随机化快速排序,即随机化选择主元素。其效率不依赖于输入数据的排序状况。它的效率通常是归并排序的三倍。视频中精彩的部分是对随机化快速排序算法复杂度的推导过程,其中不乏精彩的数学技巧。
liyinchen808
·
2020-09-12 12:43
算法
[MIT
算法导论
]笔记
目录算法时间复杂度主方法分治法归并排序乘方问题斐波那契数列算法时间复杂度主方法case1:f(n)=O(n^(log(b)a-ε))(ε>0)=>T(n)=Θ(n^log(b)a)case2:f(n)=Θ(n^log(b)a·(lgn)^k)(k>=0)=>T(n)=Θ(n^log(b)a·(lgn)^(k+1))case3f(n)=Ω(n^(log(b)a+ε))(ε>0)&&存在0T(n)=Θ
Lil_Hoe
·
2020-09-12 12:01
算法
算法
算法导论
mit
算法导论
---算法分析----希尔排序---003
希尔排序是1959年由D.L.Shell提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。算法流程:1)选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;2)按增量序列个数k,对序列进行k趟排序;3)每趟排序,根据对应的增量ti,将待
Alisck
·
2020-09-12 11:08
算法导论
算法导论
学习笔记(11)——贪心算法之哈夫曼树
详细的贪心算法讲解可参看http://www.cnblogs.com/chinazhangjie/archive/2010/11/23/1885330.html贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或
xiangzhang321
·
2020-09-12 08:35
算法导论
动态规划之最优二叉树
原理来自于《
算法导论
》,其实和矩阵的动态规划基本一样,所以这里就不作阐述了。直接上代码,通过构造了最优的root数组后,很容易再创建一个二叉树(这一小部分大家可以自己理解后试试)。
weixin_34138255
·
2020-09-12 07:20
算法导论
-22.3-6 用栈实现DFS
自己写的一个:#include#includeusingnamespacestd;constintmaxV=100,white=0,gray=1,black=2;intv,itime;structSNode{//节点intcolor,d,f,num;SNode*p;};structSAdj{//邻接表intnum;SAdj*next;};SAdj*adj[maxV];SNode*vertex[ma
weixin_34050389
·
2020-09-12 07:45
上一页
9
10
11
12
13
14
15
16
下一页
按字母分类:
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
其他