ps做网站大小尺寸,网站的备案号在哪,制作网站注册登录模块的思维导图,企业信息查询单在哪里打印1. 排序算法
1.1 排序算法介绍
排序也成排序算法#xff08;Sort Algorithm#xff09;#xff0c;排序是将一组数据#xff0c;依照指定的顺序进行排序的过程
1.2 排序的分类
1、内部排序#xff1a; 指将需要处理的所有数据都加载到**内部存储器#xff08;内存Sort Algorithm排序是将一组数据依照指定的顺序进行排序的过程
1.2 排序的分类
1、内部排序 指将需要处理的所有数据都加载到**内部存储器内存中进行排序。 2、外部排序 数据量过大无法全部加载到内存中需要借助外部存储文件等**进行排序 3、常见的排序算法分类 4、算法时间复杂度 度量一个程序算法执行时间的两种方法 1事后统计的方法 这种方法可行但是有两个问题一是想对设计的算法的运行性能进行评测需要实际运行该程序二是所得时间的统计量依赖于计算机的硬件、软件等环境因素这种方式要在同一个计算机的相同状态下运行才能比较哪个算法速度更快。 2事前估算的方法 通过分析某个算法的时间复杂度来判断哪个算法更优。
1.3 算法的时间复杂度
1、时间频度一个算法执行的时间与算法中语句执行的次数成正比哪个算法中语句执行次数多它花费的时间就多。一个算法中语句执行次数称为语句频度或者时间频度记为T(n) 2、举例说明—基本案例 比如计算1-100所有数字之和我们设计两种算法
int total 0 ;
int end 100 ;
// 使用for循环计算
for(int i 1; i end; i) {total i;
}
T(n) n 1;// 直接计算
total (1end) * end/2
T(n) 1;3、时间复杂度 1、一般情况下算法中的基本操作语句的重复执行次数是问题规模n的某个函数用T(n)表示若有某个辅助函数 f(n) 使得当n趋近于无穷大时T(n)/f(n)的极限值为不等于0的常数则称f(n)是T(n)的同数量级函数。记作T(n) O(f(n))称O(f(n))为算法的渐进时间复杂度简称时间复杂度。 2、T(n)不同但是时间复杂度可能相同。如 T(n) n² 7n 6 与 T(n ) 3n² 2n 2 他们的T(n)不同但是时间复杂度相同都为O(n²)。 3、计算时间复杂度的方法 用常数1 代替运行时间中的所有加法常数 T(n) n² 7n 6 → T(n) n² 7n 1 修改后的运行次数函数中只保留最高阶项 T(n) n² 7n 1 → T(n) n² 去除最高阶项的系数 T(n) n² → T(n) n² → O(n²)
1.4 常见的时间复杂度
1、常数阶 O(1)
int i 1;
int j 2;
i;
j;
int m i j;2、对数阶 O(㏒2n)
int i 1;
while (i n) {
i i * 2;
}3、线性阶 O(n)
for(int i 0; i n; i) {j i;j ;
}4、线性对数阶O(n㏒2n)
for( m 1; m n; m) {i 1;while (in) {i i * 2;}
}5、平方阶 O(n²)
for(x1; xn; x) {for(i1; in; i) {j i;j;}
}6、立方阶 O(n³) 7、k次方阶 O(n∧k) 参考上面的O(n²)去理解就好了O(n³) 相当于3层n循环其他的类似 8、指数阶 O(2∧n) 说明 1、 常见的算法时间复杂度由小到大依次为 O(1) O(㏒2n) O(n) O(n㏒2n) O(n²) O(n³) O(n∧k) O(2∧n)随着问题规模n的不断增大算法的执行效率越低 2、我们应该尽可能避免使用指数阶的算法
1.5 平均时间复杂度和最坏时间复杂度
1、平均时间复杂度是指所有的可能的输入实例均以等概率出现的情况下该算法运行的时间 2、最坏情况下的时间复杂度称为最坏时间复杂度。一般讨论的时间复杂度均是最坏情况下的时间复杂度。 3、平均时间复杂度和最坏时间复杂度是否一致和算法有关。
1.6 算法的空间复杂度简介
基本介绍 1、类似于时间复杂度的讨论一个算法的空间复杂度(space complexity) 定义为该算法所耗费的存储空间它也是问题规模n的函数。 2、空间复杂度(space complexity) 是对一个算法在运行过程中临时占用存储空间大小的度量。有的算法需要占用的临时工作单元数与解决问题的规模n有关它随着n的增大而增大当n较大时将占用较多的存储单元例如快速排序和归并排序算法就属于这种情况。 3、在做算法分析时主要讨论的是时间复杂度。从用户体验上看更看重程序运行的速度。一些缓存产品redis、memcache和算法基数排序本质就是用空间换时间。