9得票4回答
C# 归并排序性能优化

只是一个快速的提醒,这不是作业。我只是想要磨练一下我的算法。我正在使用C#玩耍MergeSort,并编写了一个递归方法,可以根据泛型进行排序: class SortAlgorithms { public T[] MergeSort<T> (T[] unsortedArr...

11得票1回答
算法:混合归并排序和插入排序的执行时间

大家好,SO社区:我是一名计算机科学专业的学生,目前正在进行一项实验,将MergeSort和InsertionSort相结合。我们知道,在特定阈值S下,InsertionSort的执行时间比MergeSort更快。因此,通过合并这两种排序算法,可以优化总运行时间。然而,经过多次实验,使用100...

13得票2回答
链表的冒泡排序算法

我编写了一个冒泡排序算法来对链表进行排序。我是Java的初学者,正在尝试学习数据结构。我很困惑为什么我的第二个元素没有被正确地排序。class SListNode { Object item; SListNode next; SListNode(Object obj)...

7得票2回答
什么是用于排序单向链表的最佳原地排序算法?

我一直在研究用原地排序算法对链表进行排序。根据维基百科的描述,归并排序通常是排序单向链表的最佳选择:在这种情况下,相对容易以一种只需要Θ(1)额外空间的方式实现归并排序。由于链表的缓慢随机访问性能使得某些其他算法(例如快速排序)表现不佳,而其他算法(例如堆排序)则完全不可行。 据我所知,归并...

7得票4回答
排序算法中的递归 - 总是不好的吗?

Mergesort(归并排序)、quicksort(快速排序)可能是最著名的nlogn排序算法。它们的解释和C++代码示例在大多数情况下包含递归。但就我对递归的了解,当数据量很大时,我们会遇到堆栈溢出的风险。因此,在实际生活中使用时,是否合理忽略关于排序算法的递归解释呢?

8得票1回答
实现快速排序似乎比归并排序花费更多时间

我正在尝试实现快速排序(使用中位数三项划分元素和小数组插入排序),并将其与归并排序的实现进行比较,但是即使快速排序的平均时间应该比归并排序更好,每次执行时它似乎需要更多的时间来对一个数组进行排序(即使是随机顺序的数组)。有什么想法为什么会发生这种情况吗? public class Quick...

7得票1回答
快速排序如何比归并排序更擅长于缓存局部性?

在涉及到快速排序与归并排序的答案中, 通常会说快速排序比归并排序更好地利用了缓存局部性(引用局部性)。 由于两种排序都采用了分治方法,我不明白为什么快速排序更加友好。有人能提供更多相关见解吗? 此外,还有关于原地归并排序的注释。如果这是可行的(我不知道是否可行),那么归并排序也可以成为缓存...

16得票3回答
关于数组中的原地合并

我看到了以下问题。 给定一个包含n个元素和一个整数k,其中k<n。已经排好序的元素{a0...ak}和 {ak+1...an}。请提供一种时间复杂度为O(n),空间复杂度为O(1)的算法进行排序。 在我看来,似乎无法以O(n)时间复杂度和O(1)空间复杂度完成此任务。实际上,这个问题...

11得票5回答
C++中合并多个已排序序列为一个已排序序列的算法

我需要一个算法来将多个已排序的序列合并成一个已排序的序列,假设有X个已排序的序列,每个序列中有n个元素,使用C++编程语言,你能提供一些例子吗? 注意:我不想使用任何库。

26得票9回答
多线程快速排序或归并排序

如何在Java中实现并发的快速排序或归并排序算法?我们在一台拥有16个(虚拟)内核的Mac上遇到了问题,使用默认的Java排序算法只有一个内核在工作!看到这部非常好的机器完全未被充分利用真是令人不爽。所以我们自己写了一个(我写的),确实获得了很好的加速效果(我编写了一个多线程快速排序,由于其分...