我正在阅读排序方法,包括冒泡排序,选择排序,合并排序,堆排序,桶排序等.它们还包含时间复杂度,这有助于我们了解哪种排序是有效的.所以我有一个基本问题.如果我们包含数据,那么我们将如何选择排序.时间复杂度是帮助我们决定排序方法的参数之一.但是我们还有另一个参数来选择排序方法吗?
只是想弄清楚排序以便更好地理解.
有一些关于堆排序的查询:
我们在哪里使用堆排序?
堆排序的更大优势是什么(时间复杂度O(n log n)除外)?
堆排序的缺点是什么?
什么是堆的构建时间?(我听说O(n),但我不确定.)
我们必须使用堆排序或堆排序的任何情况都是更好的选择(优先级队列除外)?
在对数据应用堆排序之前,我们将查看数据的参数是什么?
Tim*_*nes 12
排序算法的两个主要理论特征是时间复杂度和空间复杂度.
通常,时间复杂度让我们知道算法的性能随着数据集大小的增加而变化.需要考虑的事项:
同样,空间复杂性描述了算法需要运行多少空间.例如,插入排序等简单排序需要额外的固定空间量来存储当前插入的元素的值.这是O(1)的辅助空间复杂度 - 它不随输入的大小而变化.但是,合并排序在运行时会在内存中创建额外的数组,辅助空间复杂度为O(n).这意味着它所需的额外空间量与输入的大小线性相关.
当然,算法设计通常需要在时间和空间之间进行权衡 - 具有低空间复杂度的算法可能需要更多时间,而具有低时间复杂度的算法可能需要更多空间.
有关更多信息,您可能会发现本教程很有用.
要回答您更新的问题,您可能会发现堆排序上的维基百科页面很有用.
| 归档时间: |
|
| 查看次数: |
10999 次 |
| 最近记录: |