n4

T(n)=2T(n/2)+n=o(nlogn)

纵然是瞬间 提交于 2020-03-23 14:08:16
T(n)=2T(n/2)+n 设n=2^k T(n/2)=2T(n/2^2)+n/2 T(n/2^2)=2T(n/2^3)+n/2^2 T(n)=2T(n/2)+n=2^2T(n/2^2)+2*n/2+n=2^3T(n/2^3)+2^2*n/2^2+2*n/2+n =2^kT(1)+kn=nT(1)+kn=n(logn+T(1))=o(nlogn) 注:T(1)=0 快速排序的最优时间复杂度是 O ( n l o g n ) O(nlogn),最差时间复杂度是 O ( n 2 ) O(n2),期望时间复杂度是 O ( n l o g n ) O(nlogn)。 这里我们证明一下快排的期望时间复杂度。 设 T ( n ) T(n) 为对长度为 n n 的序列进行快速排序所需要的期望时间。我们有: <script type="text/javascript" src="http://common.cnblogs.com/script/ASCIIMathML.js"></script> T ( 0 ) = 0 T(0)=0 以及: T ( n ) = n + 1 n ∑ i = 0 n − 1 ( T ( i ) + T ( n − i − 1 ) ) T(n)=n+1n∑i=0n−1(T(i)+T(n−i−1)) 我们可以通过放缩来获得对 T ( n ) T(n) 上界的一个估计。 T

阿里云服务器共享型xn4 n4哪个更好用

大城市里の小女人 提交于 2020-01-23 00:37:28
阿里云服务器共享型实例xn4 n4 属于多台小鸡共享一台母鸡资源,小鸡之间存在资源争抢的情况。共享型实例xn4 n4属于阿里云上一代实例机型,不过现在还是有很多人在使用这几款机型。因为大多数业务环境都可以在这两种机型中流畅运行。 阿里云共享型实例是阿里云入门级云服务器,实例是阿里云对云服务器的正式称呼(实例就是云服务器,云服务器就是实例,大家这么理解就行)。阿里云共享型实例包括xn4/n4/mn4/e4这四个不同配置,平时比较常见的是xn4和n4这两种配置。 了解更多参阅 阿里云帮助文档 共享型实例xn4、n4具有多种处理器和内存配比1:1和1:2。共享型实例xn4和共享型实例n4是阿里云共享型服务器的主力机型,其实这两种共享型主机都可以用来做个人博客、中小型网站,Web应用程序,也可以适用于开发环境、代码存储及测试、轻量级企业应用等业务环境。 共享基本型 xn4 实例和共享计算型 n4 实例的区别主要在于配置高低不同,前者适合个人博客、小型网站;后者适合有一定流量及业务快速增长中的业务环境使用,多数是从 xn4 实例升级上去的。那么我们个人博客、小型网站等初期可以选择共享基本型 xn4 实例,后期流量大了可以平滑升级到更高配置。 建议个人博客、中小型网站可以使用共享型实例,从性能上可以满足这类业务需要。 来源: CSDN 作者: 云使者 链接: https://blog.csdn

python之深浅copy

隐身守侯 提交于 2020-01-11 06:52:36
一.is 与 == python中 == 是比较二者值是否相同,is用来比较二者的内存地址是否相同. n1 = -55 n2 = -55 print(n1 == n2) # True print(id(n1), id(n2)) # 1976371124624 1976371124656 n3 = 'ddd' n4 = 'ddd' print(id(n3), id(n4)) # 2543122508856 2543122508856 print(n3 is n4) # True 二.赋值 2.1 小数据池  两个变量分别进行数值赋值操作是,如(n1 = 'goulonghui', n2 = 'goulonghui),存在小数据池概念 小数据池: int,str在一定范围内,如果两个数值相同,为了节省内存,共用一个内存地址   int范围: -5 - 256    字符串:①单个字母*int(20)存在小数据池,包括20               ②全是字母或者数字,或者字母和数字的任意组合都存在小数据池, 其他都没有         2.2 变量之间相互赋值   python中两个变量之间的相互赋值,则二者共用同一块内存,内存地址相同.(两基友共用一个充气娃娃实例) n3 = [1, 2, 3, [11, 22]] n4 = n3 print(n3, id(n3)) # [1, 2

翻译: Clustered Index Design Considerations 聚集索引设计注意事项

你。 提交于 2020-01-01 04:56:03
原文出自: 《Pro SQL Server Internals, 2nd edition》 的CHAPTER 7 Designing and Tuning the Indexes中的Clustered Index Design Considerations一节(即P155~P165) ,Dmitri Korotkevitch,侵删 每次更改聚集索引键的值时,都会发生两件事。 首先,SQL Server将行移动到聚集索引页链和数据文件中的不同位置。 其次,它更新了row-id,它是聚集索引键。 存储的行id,需要在所有非聚集索引中更新。 就I / O而言,这可能是昂贵的,特别是在批量更新的情况下。 此外,它可以增加聚集索引的碎片,并且在行ID大小增加的情况下,可以增加非聚集索引的碎片。 因此,最好有一个静态聚集索引,其中键值不会改变。 所有非聚集索引都使用聚集索引键作为row-id。 过宽的聚集索引键会增加非聚集索引行的大小,并且需要更多空间来存储它们。 因此,SQL Server需要在索引或范围扫描操作期间处理更多数据页,这会降低索引的效率。 在非唯一非聚集索引的情况下,row-id也存储在非叶索引级别,这反过来会减少每页索引记录的数量,并可能导致索引中的额外中间级别。 尽管非叶索引级别通常缓存在内存中,但每次SQL Server遍历非聚集索引B-Tree时

设计和调整索引

久未见 提交于 2020-01-01 04:55:49
设计和调整索引   无法定义可在任何地方使用的索引策略。每个系统都是独一无二的,需要基于工作负载,业务需求和其他一些因素的自己的索引方法。但是,有几个设计考虑因素和指南可以应用于每个系统。   当我们优化现有系统时也是如此。虽然优化是一个在每种情况下都是独特的迭代过程,但是有一组技术可用于检测每个数据库系统中的低效率。 在本章中,我们将介绍在设计新索引和优化现有系统时需要记住的几个重要因素。 聚集索引设计注意事项   每次更改聚簇索引键的值时,都会发生两件事。首先, SQL Server 将行移动到聚簇索引页链和数据文件中的不同位置。其次,它更新了 row-id ,它是聚集索引键。存储了行 id ,需要在所有非聚簇索引中更新。就 I / O 而言,这可能是昂贵的,特别是在批量更新的情况下。此外,它可以增加聚簇索引的碎片,并且在行 ID 大小增加的情况下,可以增加非聚簇索引的碎片。因此,最好有一个静态聚簇索引,其中键值不会改变。    所有非聚簇索引都使用聚簇索引键作为 row-id 。过宽的聚簇索引键会增加非聚簇索引行的大小,并且需要更多空间来存储它们。因此, SQL Server 需要在索引或范围扫描操作期间处理更多数据页,这会降低索引的效率。    在非唯一非聚簇索引的情况下, row-id 也存储在非叶索引级别,这反过来会减少每页索引记录的数量,并可能导致索引中的额外中间级别

【shell】整数运算,小数运算

↘锁芯ラ 提交于 2019-12-27 06:32:00
【shell】整数运算,小数运算 1.整数运算 【demo01】expr typeset x=10 typeset y=2 n1=`expr $x + $y` n2=`expr $x - $y` n3=`expr $x \* $y` #使用expr时 符号* 需要转义 n4=`expr $x / $y` n5=`expr $x % $y` echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5 【demo02】小括号 typeset x=10 typeset y=2 ((n1=$x+$y)) ((n2=$x-$y)) ((n3=$x*$y)) ((n4=$x/$y)) ((n5=$x%$y)) echo n1=$n1,n2=$n2,n3=$n3,n4=$n4,n5=$n5 echo $(($x+$y)) echo $(($x-$y)) echo $(($x*$y)) echo $(($x/$y)) echo $(($x%$y)) 说明:((n1=$x+$y)) 等价于 n1=`expr $x + $y` 【demo03】中括号 typeset x=10 typeset y=2 echo $[$x+$y] echo $[$x-$y] echo $[$x*$y] echo $[$x/$y] echo $[$x%$y] 【demo04】let typeset x

javascript事件大全

a 夏天 提交于 2019-12-13 08:04:57
javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3、N2 鼠标点击时触发此事件 ondblclick IE4、N4 鼠标双击时触发此事件 onmousedown IE4、N4 按下鼠标时触发此事件 onmouseup IE4、N4 鼠标按下后松开鼠标时触发此事件 onmouseover IE3、N2 当鼠标移动到某对象范围的上方时触发此事件 onmousemove IE4、N4 鼠标移动时触发此事件 onmouseout IE4、N3 当鼠标离开某对象范围时触发此事件 onkeypress IE4、N4 当键盘上的某个键被按下并且释放时触发此事件. onkeydown IE4、N4 当键盘上某个按键被按下时触发此事件 onkeyup IE4、N4 当键盘上某个按键被按放开时触发此事件 页面相关事件 onabort IE4、N3 图片在下载时被用户中断 onbeforeunload IE4、N 当前页面的内容将要被改变时触发此事件 onerror IE4、N3 出现错误时触发此事件 onload IE3、N2 页面内容完成时触发此事件 onmove IE、N4 浏览器的窗口被移动时触发此事件 onresize IE4、N4 当浏览器的窗口大小被改变时触发此事件 onscroll IE4、N 浏览器的滚动条位置发生变化时触发此事件 onstop

蓝桥杯练习题(算法训练)

那年仲夏 提交于 2019-12-10 21:37:04
问题描述   对于给定整数数组a[],寻找其中最大值,并返回下标。 输入格式   整数数组a[],数组元素个数小于1等于100。输出数据分作两行:第一行只有一个数,表示数组元素个数;第二行为数组的各个元素。 输出格式   输出最大值,及其下标 样例输入 3 3 2 1 样例输出 3 0 import java.util.Scanner; public class Demo4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for(int i = 0; i < arr.length; i++){ arr[i] = sc.nextInt(); } System.out.print(max(arr) + " "); System.out.print(max_sub(arr)); } public static int max(int[] a){ int max = a[0]; for (int value : a) { if (max < value) { max = value; } } return max; } public static int max_sub(int[] a){

共轭对称序列的快速傅里叶反变换

偶尔善良 提交于 2019-12-04 16:34:12
一、功能 计算共轭对称复序列的快速傅里叶反变换,其变换结果是实数。 二、方法简介 序列 \(x(n)\) 的离散傅里叶变换为 \[ X(k)=\sum_{n=0}^{N-1}x(n)W_{N}^{nk}, \ k=0,1,...,N-1 \] 序列 \(X(k)\) 的离散傅里叶反变换为 \[ x(n)=\frac{1}{N}\sum_{n=0}^{N-1}X(k)W_{N}^{-nk}, \ n=0,1,...,N-1 \] 共轭对称复序列的傅里叶反变换,可用复序列快速傅里叶反变换算法进行计算。但考虑到 \(X(k)\) 是共轭对称的,其傅里叶反变换 \(x(n)\) 是实数,因此,为进一步提高计算效率,需要对一般的复序列IFFT算法进行一定的修改。 共轭对称序列 \(X(k)\) 具有如下性质: \(X(0)\) 和 \(X(\frac{N}{2})\) 都是实数,且有 \[ X(k)=X^{*}(N-k), \ 1\leqslant k\leqslant \frac{N}{2}-1 \] 即 \(X(k)\) 的实部是偶对称,虚部是奇对称。在计算傅里叶反变换时,利用这种共轭对称性,我们就可以不必计算和存储 \(X(k)(\frac{N}{2}+1\leqslant k\leqslant N-1)\) 以及 \(X(0)\) 和 \(X(\frac{N}{2})\) 的虚部