Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 智能设计排序真的不需要额外的内存吗?_Algorithm_Sorting_Time Complexity - Fatal编程技术网

Algorithm 智能设计排序真的不需要额外的内存吗?

Algorithm 智能设计排序真的不需要额外的内存吗?,algorithm,sorting,time-complexity,Algorithm,Sorting,Time Complexity,假设我用一种语言实现(例如,我使用C#/Java): public void排序(T[]arr) { 返回; } 分析说, 该算法在时间上是恒定的,并对列表进行排序, 完全不需要额外的内存 然而,我想知道这怎么可能是正确的。尽管在大多数语言中,T[]arr将是对数组的引用,但该参数不是容器引用的副本,因此它不是“无内存”当return语句告诉操作系统跳转到哪里时,它不是以某种机器语言内存的形式结束了吗?我特别质疑算法不使用额外内存的想法 由于全能的概念,我们实际上不需要传递数组。无需复制引用,

假设我用一种语言实现(例如,我使用C#/Java):

public void排序(T[]arr)
{
返回;
}
分析说,

该算法在时间上是恒定的,并对列表进行排序, 完全不需要额外的内存


然而,我想知道这怎么可能是正确的。尽管在大多数语言中,
T[]arr
将是对数组的引用,但该参数不是容器引用的副本,因此它不是“无内存”当
return
语句告诉操作系统跳转到哪里时,它不是以某种机器语言内存的形式结束了吗?我特别质疑算法不使用额外内存的想法

由于全能的概念,我们实际上不需要传递数组。无需复制引用,因为排序算法已经知道引用的位置

public void Sort<T> ()
{
    return;
}

这显然是一个恒定的时间,应该足以节省运行时内存的每一位,同时仍然使用我们有史以来最先进的排序算法之一。

这是一个笑话算法。这不是真的。不过,作为一般规则,“不需要额外内存”通常意味着“只需要少量、恒定的额外内存”。因此,它会使用一些,但数量不会随着任务的大小而增加,因此通常是微不足道的。这个笑话本质上是一种声称智能设计是荒谬的说法,但这不是一个非常有力的主张,因为它在两种不同的“秩序”概念之间交换(“普通凡人”的提升类和“不可知”的类,据说已经由伟大的分类者提供给我们),同时假装没有。
public void Sort<T> ()
{
    return;
}
{ }