quicksort 相关问题

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

典型的现实世界数据(非对手)是否会导致中位数 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

快速排序疑难解答 (C++)

我需要测量系统执行排序算法所需的时间。除了快速排序之外,我已经完成了所有工作。旁注,我不知道如何测量时间

回答 1 投票 0

用于我的快速排序功能的高长度数组的堆栈溢出

需要使用并测量随机数组排序所需的时间。我收到堆栈溢出错误,如下所示: COM301 Lab 3.exe 中 0x00007FF64EEC2634 处未处理的异常:0xC00000...

回答 1 投票 0

找到四个,其总和等于目标

问题: 给定一个包含 n 个整数的数组 nums,返回所有唯一四元组 [nums[a], nums[b], nums[c], nums[d]] 的数组,使得: 0 <= a, b, c, d < n a, b, c, and d are distinct. nums...

回答 1 投票 0

排序算法选择[关闭]

我想知道,如果你的资源有限,那么冒泡排序、插入排序、合并排序、快速排序和选择排序中的哪一种排序算法最不适合用于对 1 亿个元素的列表进行排序

回答 1 投票 0

以最后一个元素为基准的快速排序不排序

我有一个任务是创建一个快速排序算法,该算法选择最后一个元素作为主元元素。当发现大于或等于的元素 n 时,进一步在partition()函数内部...

回答 1 投票 0

快速排序分区算法——为什么与循环外的主元值交换?

我正在看 CLRS 算法简介中的快速排序算法 https://dl.ebooksworld.ir/books/Introduction.to.Algorithms.4th.Leiserson.Stein.Rivest.Cormen.MIT.Press.9780262046305。

回答 1 投票 0

Python 中的 3 种快速排序

我正在尝试用Python实现3路分区快速排序代码。 我的代码有两行: 第一个是要排序的整数个数 第二个是要排序的整数数组 我的...

回答 1 投票 0

Jon Bentley 漂亮的快速排序 - 它是如何工作的?

我以为我对快速排序的工作原理有了很好的理解,直到我观看了 http://code.google.com/edu/algorithms/index.html 上的视频,其中 Jon Bentley 介绍了他的“漂亮的快速排序代码”。 ..

回答 5 投票 0

C 中 64 位整数数组的快速排序函数问题

我目前正在使用 C 语言处理大型 64 位整数集,我自然需要一个快速排序算法来简化这些集合上的任何传入函数。我已经尝试过经典的实现...

回答 2 投票 0

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