Sorting 您将使用什么排序算法对大型、几乎已排序的列表进行排序
假设您有一个几乎已排序的30亿整数数组。Sorting 您将使用什么排序算法对大型、几乎已排序的列表进行排序,sorting,computer-science,Sorting,Computer Science,假设您有一个几乎已排序的30亿整数数组。 什么排序算法更合适(从“经典”排序算法中)? 如果这个列表是完全随机的呢 我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,并且您没有提供任何会改变这一点的约束(如最小时间或最小内存)。我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,您没有提供任何会改变这一点的约束(如最小时间或最小内存)。考虑使用插入排序,如果输入(几乎)排序,则需要线性时间。即使输入已排序,快速排序和合并排序的时间复杂度也为O(n log
什么排序算法更合适(从“经典”排序算法中)?
如果这个列表是完全随机的呢 我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,并且您没有提供任何会改变这一点的约束(如最小时间或最小内存)。我将两者都使用合并排序,因为它是标准unix sort()调用中使用的,您没有提供任何会改变这一点的约束(如最小时间或最小内存)。考虑使用插入排序,如果输入(几乎)排序,则需要线性时间。即使输入已排序,快速排序和合并排序的时间复杂度也为O(n log n)。考虑使用插入排序,如果输入已(几乎)排序,则需要线性时间。快速排序和合并排序的时间复杂度为O(n log n),即使输入已排序。根据《简单算法》的作者,他们比较了不同用途的排序方法,您的标准更倾向于插入排序。看
根据《简单算法》的作者,他们比较了不同用途的排序方法,你的标准更倾向于插入排序。看
我明白了。我原以为快速排序是第二种方法的首选方法。但我不确定第一个。根据初始顺序,快速排序可能会有不好的性能。我明白了,希普索尔通常是首选。我原以为快速排序是第二种方法的首选方法。但我不确定第一个。根据初始顺序,快速排序可能会有不好的性能。希普索尔特通常是首选。