导航:首页 > 源码编译 > 额外空间算法

额外空间算法

发布时间:2024-06-01 10:55:04

算法的空间复杂度指的是什么

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。

而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

类似于 时间复杂度的讨论,一个算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。

一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。



(1)额外空间算法扩展阅读:

分析

分析一个算法所占用的存储空间要从各方面综合考虑。如对于递归算法来说,一般都比较简短,算法本身所占用的存储空间较少,但运行时需要一个附加堆栈,从而占用较多的临时工作单元;

若写成非递归算法,一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。

一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。

若一个算法为递归算法,其空间复杂度为递归所使用的堆栈空间的大小,它等于一次调用所分配的临时存储空间的大小乘以被调用的次数(即为递归调用的次数加1,这个1表示开始进行的一次非递归调用)。

② 想问您一些排序算法的伪代码,谢啦

冒泡排序:网页链派皮接

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。

C++自带的algorithm库函数中提供了排序算法。

稳定的

冒泡排序(bubble sort) — O(n^2)

鸡尾酒排序(Cocktail sort,双向的冒泡排序) — O(n^2)

插掘羡友入排序(insertion sort)— O(n^2)

桶排序(bucket sort)— O(n); 需要 O(k) 额外空间

计数排序(counting sort) — O(n+k); 需要 O(n+k) 额外空间

合并排序(merge sort)— O(nlogn); 需要 O(n) 额外空间

原地合并排序— O(n^2)

二叉排序树排序 (Binary tree sort) — O(nlogn)期望判槐时间; O(n^2)最坏时间; 需要 O(n) 额外空间

鸽巢排序(Pigeonhole sort) — O(n+k); 需要 O(k) 额外空间

基数排序(radix sort)— O(n·k); 需要 O(n) 额外空间

Gnome 排序— O(n^2)

图书馆排序— O(nlogn) with high probability,需要 (1+ε)n额外空间

不稳定的

选择排序(selection sort)— O(n^2)

希尔排序(shell sort)— O(nlogn) 如果使用最佳的现在版本

组合排序— O(nlogn)

堆排序(heapsort)— O(nlogn)

平滑排序— O(nlogn)

快速排序(quicksort)— O(nlogn) 期望时间,O(n^2) 最坏情况; 对于大的、乱数列表一般相信是最快的已知排序

Introsort— O(nlogn)

耐心排序— O(nlogn+k) 最坏情况时间,需要 额外的 O(n+k) 空间,也需要找到最长的递增子串行(longest increasing subsequence)

不实用的

Bogo排序— O(n×n!) 期望时间,无穷的最坏情况。

Stupid sort— O(n^3); 递归版本需要 O(n^2) 额外存储器

珠排序(Bead sort) — O(n) or O(√n),但需要特别的硬件

Pancake sorting— O(n),但需要特别的硬件

stooge sort——O(n^2.7)很漂亮但是很耗时

阅读全文

与额外空间算法相关的资料

热点内容
编译速度和系统有关吗 浏览:54
复盛制冷压缩机 浏览:979
云服务器共享手机流量 浏览:833
星界边境像素压缩 浏览:458
算法分析与设计二手 浏览:981
学编程如何配电脑 浏览:971
怎么看特征找卡密的加密方式 浏览:526
方舟非官方服务器怎么赚钱 浏览:516
明日之后服务器无效是怎么回事 浏览:270
蛋壳公寓app如何查水电表 浏览:718
ad20库中的51单片机怎么找 浏览:624
阿里云服务器有点卡吗 浏览:215
苹果7如何让app后台运行 浏览:170
耐克app预售产品哪里看 浏览:209
补全算法一年级 浏览:131
evd数据调校软件加密 浏览:442
app听课与微信如何设置分屏 浏览:911
加密的excel怎么撤销 浏览:43
java动态数组初始化 浏览:978
编译后程序块过大不适合 浏览:676