quicksort相关内容

如何实现中间元素为轴心的快速排序?

有许多不同版本的快速排序以不同的方式选择透视表。 始终选择第一个元素或最后一个元素作为轴心 选择一个随机元素作为枢轴。 选择中位数作为枢轴。 我已经使用 the last element as the pivot实现了所有功能,但当我尝试对中间元素实现相同的逻辑时,它不能正常运行。 以下是我的python代码: import random import time sta ..
发布时间:2022-07-20 17:20:00 Python

计算快速排序中的交换和比较(Python)

我正在尝试在快速排序中计算交换和比较操作。 我认为我在正确的位置设置了计数器,但由于递归,我从未获得这些值的正确数量。为了在整个递归过程中存储这些值,我将它们作为参数(qui_swp和qui_com. )进行传递 例如:当我让此算法对包含500个整数的列表进行排序时,它返回120个交换和1个比较。 以下是我的代码: qui = quicksort(numbers, 0, len(n ..
发布时间:2022-05-23 21:24:28 Python

使用C#进行快速排序

您好,我试图进行快速排序,但没有显示结果,例如用户输入&cdabe";,因此预期结果是";abcde";。请问没有显示结果的原因是什么? 因为代码中没有错误。我使用的是MVC。我的合并排序工作正常,但我的快速排序没有。 型号: public string QuickSort() { string arran ..
发布时间:2022-05-23 21:19:19 C#/.NET

如何干净利落地使用QuickSort对链表进行排序--Python

使用快速排序对链接列表进行排序的最简洁方法是什么?我目前有以下内容,但不是很好。我想要一个类似Sort(Self)的函数,这样我就可以简单地使用list.sort(),并且我可以使用快速排序方法对我的链表进行排序。 潜在的方法,但不确定如何实现:从当前列表(Self)开始,让Pivot作为列表头部的数据,并创建两个新的链表:一个称为Small(包含数据小于Pivot的所有元素),另一个(包含除P ..
发布时间:2022-05-23 21:07:41 Python

非递归快速排序

如何使底层函数成为非递归的,我试过了,但创建了新函数,这不是这个问题的重点。给出了第一个函数,并由我创建了Inplace_QuickSort_Non_RECURSIVE。 import random def inplace_quick_sort(S, a, b): """Sort the list from S[a] to S[b] inclusive using the quick- ..
发布时间:2022-05-23 20:47:42 Python

快速排序实现不适用于重复键

我尝试实现快速排序。它工作得很好,除非有重复的键,在这种情况下会有一个无限循环,并且永远不会结束。你能帮我弄明白我做错了什么吗? // quick sort void quickSort(int arr[], const unsigned size) { // base case if (size ..
发布时间:2022-05-23 20:43:52 其他开发

快速排序枢轴

使用快速排序对以下数组 a 进行排序, [6, 11, 4, 9, 8, 2, 5, 8, 13, 7] 主元应选择为第一个和最后一个元素的算术平均值,即(a[0] + a[size - 1])/2(向下取整). 显示所有重要步骤,例如分区和对算法的递归调用. 我了解如何使用快速排序对数组进行排序,但我不确定如何计算枢轴. 枢轴是由 6 + 7 = 13 然后 13/2 = ..
发布时间:2022-01-22 21:26:52 其他开发

Java中的随机枢轴快速排序

可能重复: 在Java中使用随机枢轴进行快速排序 下面编写的快速排序代码使用数组的第一个元素作为枢轴,然后对数组进行排序.现在我想随机选择枢轴而不是第一个,然后对数组进行排序,我卡住了,请告诉我我可以在下面的代码中进行哪些更改以获得完美的结果. import java.util.*;导入 javax.swing.JOptionPane;公共类快速排序{公共静态无效主要(字符串[]参数){ ..
发布时间:2022-01-22 21:21:30 Java开发

双向链表上的快速排序

我想在同步双向链表上实现快速排序算法.我给函数“分区"左右边界,然后它开始在左侧搜索较低的值,并将较大的值放在右侧.这是可行的,因为我的枢轴元素始终是最右边的元素,并且在此步骤之后它位于中间. 我总是陷入无限循环,我不知道为什么?可能是错误的中止条件? 她是我的代码: private void quickSortRec(DoublyLinkedList in, ListElement ..
发布时间:2022-01-22 20:43:30 Java开发

Prolog Quicksort 使用第二个元素作为枢轴

我一直在尝试学习 prolog,我想使用列表的第二个元素作为快速排序的枢轴. 我想用 [Head |[枢轴|Tail] ] 作为方法中的输入会起作用,但是我不确定我可以在哪里放置“Head",即第一个元素. 像这样: qsort([],[]):- !.qsort([头部|[枢轴|尾部]],排序):-拆分(枢轴,[头|尾],更少,更大),qsort(Less,SortedLess),q ..
发布时间:2022-01-12 10:45:12 其他开发

如何具体化 Prolog 的回溯状态以执行与“lazy seq"相同的任务?来自 Clojure?

这是一个用 Clojure 编写的数字快速排序算法.它基本上是 "The Joy of Clojure",第 2 版,第 133 页中的快速排序算法.我稍微修改了它以(希望)更好的可读性,因为原始感觉有点太紧凑了:p> (defn qsort-inner [工作](惰性序列(循环[循环工作](让 [[ part & partz ] loopwork ](if-let [[pivot & valu ..
发布时间:2022-01-12 10:30:47 其他开发

C++ 模板不接受迭代器

我正在重新学习 C++,并开始尝试应该是一个简单的算法:快速排序.我的函数有这个签名: 模板void QSort(typename std::vector::iterator begin, typename std::vector::iterator end) 它在我的主函数中被调用: int main(){std::vectorunsort({56,32,11, ..
发布时间:2022-01-10 14:37:30 C/C++开发

如何具体化 Prolog 的回溯状态以执行与“lazy seq"相同的任务来自 Clojure?

这是一个用 Clojure 编写的数字的快速排序算法.它基本上是 “The Joy of Clojure",第 2 版,第 133 页中的快速排序算法.为了(希望)更好的可读性,我稍微修改了它,因为原版感觉有点太紧凑了:> (defn qsort-inner [工作](懒惰的序列(循环[循环工作](让 [[ part & partz ] 循环 ](if-let [[pivot & valuez] ..
发布时间:2022-01-02 23:20:47 其他开发

在 C 中使用随机枢轴对链表进行快速排序

我花了很多时间试图为一个班级解决这个问题,但我已经结束了.我已经找到了很多关于数组和其他选择枢轴的方法的资源,但我刚刚结束并且在这里真的很疯狂,任何帮助都会非常感激你无法想象. #include /*和,malloc*/#include /*打印文件*/结构列表节点{struct listnode *next;长期价值;};/*查找列表的长度,这在选择随机枢轴时很有用*/int ListLeng ..
发布时间:2022-01-01 18:50:42 其他开发

单链表的最优快速排序

我正在努力实现快速排序功能来对单链表进行排序.我必须使用什么算法来完成这个?对于链表,每次比较都需要最坏情况 O(N),而不是通常的数组 O(1).那么最坏情况下的复杂度是多少? 总而言之,我需要对快速排序算法进行哪些修改才能获得最佳排序算法以及算法的最坏情况复杂度是多少? 谢谢! 我在下面有一个实现: public static SingleLinkedList quickS ..
发布时间:2022-01-01 18:05:58 其他开发

快速排序和尾递归优化

在算法简介 p169 它谈到了对 Quicksort 使用尾递归. 本章前面的原始快速排序算法是(伪代码) 快速排序(A, p, r){如果 (p 使用尾递归优化后的版本如下 快速排序(A, p, r){而 (p 其中 Partition 根据枢轴对数组进行排序. 区别在于第二种算法只调用一次Quicksort来对LHS进行排序. 谁能向我解释为什么第一个算法会导致堆 ..
发布时间:2021-12-16 08:52:08 其他开发

Python 比编译的 Haskell 更快?

我有一个用 Python 和 Haskell 编写的简单脚本.它读取包含 1,000,000 个换行符分隔的整数的文件,将该文件解析为整数列表,对其进行快速排序,然后将其写入已排序的不同文件.该文件与未排序的文件格式相同.简单. 这里是 Haskell: quicksort :: Ord a =>[a] ->[一个]快速排序 [] = []快速排序 (p:xs) = (快速排序较小) ++ ..
发布时间:2021-12-14 11:50:55 Python