quicksort相关内容

三值中位数策略

快速排序中选择主元值的三种策略的中位数是多少? 我正在网上阅读它,但我无法弄清楚它到底是什么?以及它如何优于随机快速排序. 解决方案 三的中位数让你查看数组的第一个、中间和最后一个元素,并选择这三个元素的中位数作为主元. > 要获得三个中位数的“完整效果",对这三个项目进行排序也很重要,而不仅仅是使用中位数作为主元——这不会影响选择的内容当前迭代中的主元,但可以/将影响下一次递归 ..
发布时间:2021-12-10 10:58:10 其他开发

快速排序与堆排序

快速排序和堆排序都进行就地排序.哪个更好?哪些应用和案例是首选? 解决方案 这篇论文有一些分析. 另外,来自维基百科: 最直接的竞争对手快速排序是堆排序.堆排序是通常比快速排序,但最坏的情况是运行时间总是 Θ(nlogn).快速排序是通常更快,尽管仍有最坏情况表现的可能性除了 introsort 变体,当情况不好时切换到堆排序被检测到.如果事先知道该堆排序将是有必要,直接使用它 ..
发布时间:2021-12-10 10:56:40 其他开发

快速排序优于堆排序

堆排序的最坏情况复杂度为O(nlogn),而快速排序的复杂度为O(n^2).但经验证据表明,快速排序更胜一筹.这是为什么? 解决方案 主要因素之一是快速排序具有更好的引用局部性 -- 下一个要访问的东西通常在内存中很近到你刚才看的东西.相比之下,堆排序跳得更多.由于靠近的事物可能会被缓存在一起,因此快速排序往往会更快. 然而,快速排序的最坏情况性能明显比堆排序差.由于某些关键应用程序 ..
发布时间:2021-12-10 10:50:57 其他开发

为什么 Java 的 Arrays.sort 方法对不同的类型使用两种不同的排序算法?

Java 6 的 Arrays.sort 方法对原始数组使用快速排序,对对象数组使用归并排序.我相信大多数情况下 Quicksort 比合并排序更快,而且消耗的内存更少.我的实验支持这一点,尽管两种算法都是 O(n log(n)).那么为什么不同的算法用于不同的类型? 解决方案 最可能的原因:快速排序不是稳定,即相等的条目可以在排序过程中改变它们的相对位置;除此之外,这意味着如果你对一个已 ..
发布时间:2021-12-06 20:14:01 Java开发

LINQ“OrderBy"使用什么排序算法?

显然 LINQ 的“OrderBy"最初被指定为不稳定的,但到 Orca 的时候,它被指定为稳定的.并非所有文档都已相应更新 - 请考虑以下链接: Jon Skeet 关于 OrderBy 稳定性 Troy Magennis 关于 OrderBy 稳定性 但是如果 LINQ 的 OrderBy 现在是“稳定的",那么这意味着它没有使用快速排序(本质上是不稳定的),即使某些文档(例如 ..
发布时间:2021-12-06 20:03:38 其他开发

快速排序 最坏情况

我正在编写下面需要的程序,以便更好地理解它. Quicksort 最坏情况下的运行时间是多少,什么可能导致这种更坏情况下的性能?我们如何修改快速排序程序来缓解这个问题? 我知道它有最坏的情况 O(n^2) 并且我知道它发生在枢轴唯一的最小或最大元素时.我的问题是如何修改程序来缓解这个问题. 好的算法会很好. 解决方案 Quicksort 的性能取决于您的枢轴选择算法.最简 ..
发布时间:2021-12-06 19:59:21 其他开发

使用 Python 快速排序

我对 python 完全陌生,我正在尝试在其中实现快速排序.有人可以帮我完成我的代码吗? 我不知道如何连接三个数组并打印它们. def sort(array=[12,4,5,6,7,3,1,15]):少 = []相等 = []更大 = []如果 len(array) >1:枢轴 = 数组 [0]对于数组中的 x:如果 x 枢:更大的.append(x)排序(少)排序(枢轴)排序(更大) ..
发布时间:2021-12-06 19:37:36 Python

为什么快速排序比归并排序好?

我在一次采访中被问到这个问题.它们都是 O(nlogn),但大多数人使用 Quicksort 而不是 Mergesort.这是为什么? 解决方案 Quicksort 有 O(n2) 最坏情况运行时和 O(nlogn) 平均情况下运行时间.然而,它在很多场景下都优于归并排序,因为影响算法运行时间的因素有很多,如果把它们放在一起,快速排序就会胜出. 特别是,经常引用的排序算法的运行时间是 ..
发布时间:2021-12-06 19:34:26 其他开发

使用 qsort 对二维数组进行排序

我正在尝试对二维数组进行排序.首先我按列排序,然后按行排序.逐列有效,但逐行无效.这段代码有什么问题? int scmpr (const void *a, const void *b){返回 strcmp((const char*)a, (const char*)b);}int main(void){int i,j;字符**标签;tab=(char**)malloc(sizeof(char*)* ..
发布时间:2021-11-28 17:51:57 其他开发

多线程快速排序或归并排序

如何为 Java 实现并发快速排序或归并排序算法? 我们在 16 核(虚拟)核 Mac 上遇到了问题,其中只有一个核(!)在使用默认的 Java 排序算法工作,而且看到非常好的机器完全没有得到充分利用是不好的.所以我们写了我们自己的(我写的),我们确实获得了很好的加速(我写了一个多线程快速排序,由于它的分区性质,它并行化得很好,但我也可以写一个归并排序)......但我的实现只能扩展最多 4 ..
发布时间:2021-11-25 20:45:35 Java开发

在 Java 中,如何对排序字段为多层深度的对象的 ArrayList 进行快速排序?

基本上,我有一个名为“Employees"的容器类,其中包含一个 ArrayList.这个 ArrayList 包含“Employee"对象,这些对象又包含“EmployeeData"对象,而“EmployeeData"对象又包含 String 对象,例如“first"或“last"(它们是员工姓名). 这是ArrayList结构的示意图: ArrayList[Employee] emps ..
发布时间:2021-11-17 23:54:01 Java开发

实施快速排序

我正在尝试实施快速排序,但没有得到正确的结果.这是我的代码: public static void quickSort(Comparable[] a, int start, int stop) {如果(开始 ..
发布时间:2021-06-30 19:38:48 Java开发

java中的Hoare分区正确性

我正在努力将 Hoare 分区实现为快速排序.我试图完全理解 hoare 分区,但这本书并没有解释一切.主要是我只是想知道 while TRUE 部分是什么意思?本书摘录如下.如果我将 while 部分放在 java 中,我会使用什么,为什么? Hoare-Partition(A,p,r)x= A[p]我 = p-1j=r+1虽然是真的重复j=j-1直到 A [j] = x如果我<升将 A[i] ..
发布时间:2021-06-30 19:38:45 Java开发

python 3中值3快速排序实现,在满足递归深度限制后切换到堆排序

函数调用:(不分类) def partition( pivot, lst ):更少,相同,更多 = 列表(),列表(),列表()对于 lst 中的 val:如果 val 枢:更多.append(val)别的:相同.append(val)返回更少,相同,更多def mediumOf3(lst):"""从无序数据的列表中,找到并返回从中值第一个、中间和最后一个值."""发现者=[]开始=lst[0] ..
发布时间:2021-06-30 19:38:43 Python

如何从未排序的数组中获取 m 个最小元素的索引,而不更改实际数组?

我想创建一个临时数组来存储用户的输入并对其进行排序以获取 m 个最小元素并引用 originalArray 的原始索引,然后打印 m 个最小元素的索引但是当我运行我的代码,我得到的只是-1.我的元素不应超出原始数组的范围,因为它取自 originalArray.为什么我得到 -1? import java.util.*;公共类最小选择{public static void main(String ..
发布时间:2021-06-30 19:38:39 Java开发

快速排序递归

我正在尝试追踪这个快速排序算法: https://pythonschool.net/data-structures-algorithms/quicksort/ 但是有一组不同的数字 - [6,2,8,4,3,7,10] 算法左侧排序后就好了,但是后面的递归类就看不懂了. 一旦左侧完成并且start = 0 和end = 0,运行以下行: quicksort(myList ..
发布时间:2021-06-30 19:38:37 Python