quicksort 相关问题

Quicksort是由C. A. R. Hoare发明的排序算法,其平均情况复杂度为O(n log n)和最坏情况二次复杂度。它是最快的通用排序算法之一。

是否可以使用快速排序来计算计数反转的次数?

我已经使用归并排序解决了问题,现在我在想是否可以使用快速排序来计算数字?我也编写了快速排序的代码,但我不知道如何计算。这里是...

回答 3 投票 0

C 中的快速排序链表

我需要使用Quicksort排序算法对链表的元素进行排序。需要注意的是,我不能只交换键值,还必须交换元素本身。我的代码根本不支持

回答 1 投票 0

快速排序实现(分区期间包含与排除枢轴元素)

我正在尝试找出快速排序算法。我尝试过不同的实现。我遇到的问题与枢轴元素的包含/排除有关。 考虑这三个实现...

回答 1 投票 0

Python 中的快速排序实现(分区期间包含与排除枢轴元素)

我对编程和Python还很陌生。我目前正在尝试找出快速排序算法。我了解该算法的一般概念。我什至理解了...

回答 1 投票 0

为什么我的并行快速排序方法比顺序方法慢?

我是并行编程的新手,我不确定为什么 QuickSortParallel 方法比我的顺序版本(没有 Parallel.Invoke)慢。我有一个由一百个组成的锯齿状数组

回答 3 投票 0

快速排序实现Python - 了解基本案例

我一直在尝试通过使用左右指针方法在Python中自己实现快速排序来理解快速排序。我似乎无法让它工作并在线查看可视化,我失败了......

回答 1 投票 0

如何让快速排序算法稳定?

我在java中实现了快速排序算法,但正在努力使其稳定。 (相等元素的顺序必须保持相同) 我真的很感激任何进一步的帮助。 这是我现在的...

回答 2 投票 0

如何在不使用java.util包的情况下让快速排序算法稳定?

我在java中实现了快速排序算法,但正在努力使其稳定。 (相等元素的顺序必须保持相同)我不允许使用java库。 (特别是...

回答 1 投票 0

无法解决java中的stackoverflow错误

我主要做Python,因为它在我的学校教学大纲中,但我喜欢Java(我对它还很陌生)。我试图用java制作一个快速排序程序(递归),但发生了典型的堆栈溢出......

回答 1 投票 0

典型的现实世界数据(非对手)是否会导致中位数 3 快速排序退化?

我的印象是随机数据导致快速排序退化的概率呈指数级小,但找不到公式。 当然,已经排序的数据会导致天真的快速......

回答 1 投票 0

为什么面试官对我在 Swift 4 中的 QuickSort 实现不满意?

昨天,在一次初级 iOS 开发人员的面试中,我被要求实现 QuickSort 算法。 我写了这个: func sort(_ array: Array) -> Array 昨天,在一次初级 iOS 开发人员的面试中,我被要求实现 QuickSort 算法。 我写了这个: func sort<T: Comparable>(_ array: Array<T>) -> Array<T> { let arraySize = array.count guard arraySize > 1 else { return array } let pivot = array[arraySize / 2] var less = [T]() var equal = [T]() var greater = [T]() for element in array { if element < pivot { less.append(element) } else if element > pivot { greater.append(element) } else { equal.append(element) } } return sort(less) + equal + sort(greater) } 他们说这不是 QuickSort,而是它的一些 quicksortish 版本。 尽管我要求他们解释,他们还是建议回家寻找真正的算法。 如果你是面试官,你会对我的代码有何评价? 我看到的唯一主要问题是您正在为每次交换创建新的数组。所以你的内存使用量将是 m^2 而不是数组。除此之外,我没有发现它有什么大问题,但我已经有一段时间没有使用快速排序了。 你应该就地做。选择最后一项作为枢轴,将所有小于枢轴的项放在左侧,将其他相等且更大的项放在右侧,然后将枢轴放在其位置。 您可以选择任何项目作为枢轴,但您应该在每次迭代时将枢轴放在正确的位置,并且小于枢轴的数字应位于左侧,其他数字应位于右侧。 func quickSort<T: Comparable>(array: inout [T]) { quickSort(array: &array, startIndex: 0, endIndex: array.count-1) } func quickSort<T: Comparable>(array: inout [T], startIndex: Int, endIndex: Int) { if startIndex >= endIndex { return } let itemIndex = partition(array: &array, startIndex: startIndex, endIndex: endIndex) quickSort(array: &array, startIndex: startIndex, endIndex: itemIndex-1) quickSort(array: &array, startIndex: itemIndex+1, endIndex: endIndex) } func partition<T: Comparable>(array: inout [T], startIndex: Int, endIndex: Int) -> Int { var i = startIndex for index in startIndex..<endIndex { if array[index] < array[endIndex] { array.swapAt(i, index) i += 1 } } array.swapAt(i, endIndex) return i } 你应该使用数组过滤器而不是“for in循环”: public func quickSort<T: Comparable>(_ a: [T]) -> [T] { guard a.count > 1 else { return a } let pivot = a[a.count / 2] let less = a.filter { $0 < pivot } let equal = a.filter { $0 == pivot } let greater = a.filter { $0 > pivot } return quickSort(less) + equal + quickSort(greater) }

回答 3 投票 0

使用 ForkJoin 实现 Stackoverflow 和 Quicksort Java 实现

我一直在尝试使用Java中的ForkJoin进行快速排序,而在大部分情况下,当数组的每个元素相等时,我会得到一个堆栈溢出。 导入 java.util.Comparator; 导入j...

回答 1 投票 0

Verilog HDL 快速排序错误:在终止条件中必须仅使用常量表达式

我正在尝试在 Quartus II 中运行此 Verilog 代码,但由于 for 它不起作用。 模块 verilog_qs( 输入线时钟, 输入线 [10:0] in1, in2, in3, in4, in5, in6, in7, in8, in9, in...

回答 1 投票 0

单一函数的快速排序算法

公共静态无效排序(int [] a){ if (a.length>1){ int 枢轴=a[a.length-1]; 左整数=0; int right=a.length-1; 同时(左<=right){ ...

回答 3 投票 0

C#中的Sort()方法使用递归吗?

我最近读到C#使用快速排序算法对数组进行排序。我想知道C#使用递归方法还是迭代方法? 我发现的是这个链接,它看起来......

回答 2 投票 0

错误:调用的对象类型“int”不是函数或函数指针

我在这里写了一个快速排序: 无效交换(int&a,int&b); int mid(int lo, int hi); // 我的快速排序实现 无效排序(int vec[],int lo,int hi) { 中间; 如果...

回答 4 投票 0

该算法有效,但在 20 M 记录之间,它在 6.5 M 处停止,然后给我分段错误。这个归并排序算法正确吗?

我需要实现一个为通用数据提供归并排序和快速排序算法的库,实现以下函数原型: void merge_sort(void *base, size_t nitems, 大小...

回答 1 投票 0

在 split 函数中使用 while 循环运行 QuickSort 时出现运行时错误

我实现了我的快速排序算法,如下所示。 sortArray 函数是对数组进行排序的入口点。它初始化数组的下限和上限,然后调用快速排序 fu...

回答 1 投票 0

快速排序算法打印分段错误,无法正常工作

我目前正在研究一种快速排序算法,该算法接受随机双精度数、整数、字符和浮点数。目前正在测试双打,我正在退出(进程27368),代码为-1073740791。我愿意

回答 1 投票 0

快速排序算法打印分段错误,无法正常工作

我目前正在研究一种快速排序算法,该算法接受随机双精度数、整数、字符和浮点数。目前正在测试双打,我正在退出(进程27368),代码为-1073740791。我...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.