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
Sorting 您将使用什么排序算法对大型、几乎已排序的列表进行排序_Sorting_Computer Science - Fatal编程技术网

Sorting 您将使用什么排序算法对大型、几乎已排序的列表进行排序

Sorting 您将使用什么排序算法对大型、几乎已排序的列表进行排序,sorting,computer-science,Sorting,Computer Science,假设您有一个几乎已排序的30亿整数数组。 什么排序算法更合适(从“经典”排序算法中)? 如果这个列表是完全随机的呢 我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,并且您没有提供任何会改变这一点的约束(如最小时间或最小内存)。我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,您没有提供任何会改变这一点的约束(如最小时间或最小内存)。考虑使用插入排序,如果输入(几乎)排序,则需要线性时间。即使输入已排序,快速排序和合并排序的时间复杂度也为O(n log

假设您有一个几乎已排序的30亿整数数组。
什么排序算法更合适(从“经典”排序算法中)?

如果这个列表是完全随机的呢

我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,并且您没有提供任何会改变这一点的约束(如最小时间或最小内存)。我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,您没有提供任何会改变这一点的约束(如最小时间或最小内存)。

考虑使用插入排序,如果输入(几乎)排序,则需要线性时间。即使输入已排序,快速排序和合并排序的时间复杂度也为O(n log n)。

考虑使用插入排序,如果输入已(几乎)排序,则需要线性时间。快速排序和合并排序的时间复杂度为O(n log n),即使输入已排序。

根据《简单算法》的作者,他们比较了不同用途的排序方法,您的标准更倾向于插入排序。看


根据《简单算法》的作者,他们比较了不同用途的排序方法,你的标准更倾向于插入排序。看


我明白了。我原以为快速排序是第二种方法的首选方法。但我不确定第一个。根据初始顺序,快速排序可能会有不好的性能。我明白了,希普索尔通常是首选。我原以为快速排序是第二种方法的首选方法。但我不确定第一个。根据初始顺序,快速排序可能会有不好的性能。希普索尔特通常是首选。