"Quick Sort works well on small arrays of data, but merge sort is better for large arrays"

"Quick Sort works well on small arrays of data, but merge sort is better for large arrays"

在将快速排序与其他排序进行比较时,我听说“快速排序适用于少量数据”。

此评论的示例如下:

Merge sort can work well on any type of data sets irrespective of its size (either large or small). whereas Quick sort cannot work well with large datasets.

https://www.geeksforgeeks.org/quick-sort-vs-merge-sort

具体来说,我正在查看合并排序与快速排序,并多次听到“快速排序更适合少量数据,合并排序更适合大量数据”

我知道快速排序比合并排序有其优势,而且对于大量数据(参考位置,不需要额外的 space 等)。

但是,我很难理解为什么快速排序比合并排序更适合少量数据。good/better。

我的作品:

从我的一个快速程序(远未优化 运行 每种类型的基本版本)来看,这似乎是正确的:

对于大小为 10 的数组:

Merge comparisons: 34
Quicksort comparisons: 17

对于大小为 100 的数组:

Merge sort comparisons: 672
Quicksort comparisons: 1448

至少在比较次数上出现了,这个是真的

然而,对于我来说,我想不出为什么快速排序在较小的数据集中 excel,但在较大的数据集中被合并排序击败

使用很少或没有代码来避免最坏情况行为的快速排序通常比随机数的合并排序更快(尽管在这种情况下,基数排序仍然更快)。在具有 16 个寄存器的处理器上,例如 64 位模式的 PC,4 路合并排序(使用嵌套 if else 而不是堆)与任何数据的快速排序大致相同或更快。

你需要考虑的不仅仅是比较。一般来说,归并排序比快速排序做更多的移动但更少的比较。这有助于加快合并排序的一个示例是对指向字符串的指针数组进行排序,其中移动指针的时间比比较字符串快得多。

通过对大约 32 到 128 个元素的小子数组使用插入排序,快速排序和归并排序都可以提高 运行 次。