quicksort 相关问题

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

使用快速排序对大列表进行排序时总是会发生堆栈溢出

我正在为一项作业进行快速排序,但在对大型列表(> 100.000 个项目)进行排序时,它总是会引发堆栈溢出。堆栈溢出应该表明停止条件不成立...

回答 1 投票 0

使用快速排序对大列表进行排序时总是会发生堆栈溢出

我正在为一项作业进行快速排序,但在对大型列表(> 100.000 个项目)进行排序时,它总是会引发堆栈溢出。堆栈溢出应该表明停止条件不成立...

回答 1 投票 0

Lomuto-快速排序中的分区

众所周知,在快速排序中可以使用Lomuto-Partition。我检查了很多参考资料,几乎所有参考资料都提出了以下实现: int L_partition(int *a, int l, int r) { 我...

回答 2 投票 0

数组未在快速排序 TypeScript 中排序

我正在学习如何创建排序算法,并且正在制作快速排序算法。我按照教程进行操作,但更改了代码,但它没有显示预期的结果。我拥有的数组是...

回答 1 投票 0

快速排序实现JavaScript

我正在尝试实现快速排序。我编写了返回数组的分区函数,其中第一个元素 - 小于枢轴的元素数量,第二个 - 剩余元素的数量。 我跑了一些...

回答 1 投票 0

Ruby 中的快速排序算法 - 堆栈级别太深

我正在尝试用 Ruby 实现快速排序算法。我得到了一个简单的方法,工作得很快,但它涉及动态创建临时数组。我正在尝试实施更简化的 q...

回答 3 投票 0

Python 中的快速排序算法

我正在尝试使用Python解决快速排序算法。但是,我在编写快速排序函数时遇到了问题。即使我只使用 for 循环 len(l...

回答 1 投票 0

如何实现两个对象的快速排序

我正在尝试对两个对象数组进行排序。一个数组是 Bolt[] 数组,另一个是 Nut[] 数组。我无法将一个 Bolt 与另一个 Bolt 进行比较。我只能将螺栓与螺母进行比较,反之亦然。 我瘦了...

回答 1 投票 0

这个快速排序片段有什么问题吗?

#包括 使用命名空间 std; int f(int a[],int low,int high){ int 主元,i,j,t; 如果(低 #include <iostream> using namespace std; int f(int a[],int low,int high){ int pivot,i,j,t; if(low<high){ pivot=a[low]; i=low+1; j=high; while(i<pivot && j>pivot){ while(a[i]<=pivot){ i++; } while(a[j]>pivot){ j--; } } if(i<j){ t=a[i]; a[i]=a[j]; a[j]=t; a[low]=a[j]; a[j]=pivot; f(a,low,j-1); f(a,j+1,high); } } } int main(){ int a[100],i,n,low,high; cout<<"Enter size of array"<<endl; cin>>n; cout<<"Enter elements in array"<<endl; for(i=0;i<n;i++){ cin>>a[i]; }low=0; high=n-1; f(a,low,high); cout<<"Sorted array:"<<endl; for(i=0;i<n;i++){ cout<<a[i]<<" "; } return 0; } 我需要什么更正? 我按照快速排序算法编写了这段代码。但是它无法打印正确的排序数组。我彻底检查了所有迭代和循环,但找不到错误。请帮忙。 所示代码中存在多个逻辑错误。 pivot=a[low]; i=low+1; j=high; 正如我们在这里观察到的,pivot是数组中的值,而i和j是索引。 while(i<pivot && j>pivot){ 在这里,最终将数组中的值与数组中值的索引进行比较。这没有逻辑意义。在任何排序算法中,数组中的值与同一数组的索引没有逻辑关系。 在典型的快速排序实现中,这可能只是 i<j,但这在这里也是错误的,原因将变得显而易见。让我们假设这就是您的意图,然后继续: while(a[i]<=pivot){ i++; } 这可能会超出数组末尾,从而导致未定义的行为。为了论证,如果数组有两个值,都为零。 low为0,high为1,因此初始化后:i和j都为1,pivot为0。 因为 a[1] <= 0 这个 while 循环迭代一次,并且在下一次迭代中 a[2] 变成未定义的行为(当然,没有 a[2])。 还有其他边缘条件也会导致第二个 while 循环也产生未定义的行为,但这是一个可以留作家庭作业的练习。 我彻底检查了所有的迭代和循环,但找不到错误。 错误在于,快速排序算法的核心——枢轴逻辑存在逻辑缺陷。

回答 1 投票 0

快速排序算法中的If/else(js)

我目前正在学习一些排序算法,并实现了快速排序,但效果不佳。它不只是对数组进行排序,而是删除了重复的值。这是我的代码:

回答 1 投票 0

java快速排序时间限制

此代码有时工作正常,但在某些测试中其时间限制。有什么错误吗? 导入java.util.Scanner; 公共类主要{ 公共静态无效主(字符串[] args){ 扫描仪=...

回答 1 投票 0

java中的快速排序不正确

我一直在试图了解这里发生了什么: 导入 java.util.Random; 公共类快速排序{ 静态随机随机 = new Random(); 静态无效快速排序(int [] arr, ...

回答 1 投票 0

在c中使用堆栈进行快速排序

在 C 作业中,我需要使用堆栈而不使用递归来实现快速排序。 这是函数头(arr是要排序的数组,size是它的大小): 无效 StackBasedQuickSort(int*...

回答 2 投票 0

C 中带有霍尔分区的快速排序算法

我对这个快速排序算法有疑问: 无效交换(int *x,int *y){ int tmp; tmp = *x; *x = *y; *y = tmp; } int 分区 (int *arr,int 最小值, int 最大值){ int x=arr[分钟]...

回答 1 投票 0

如何将Excel文件中的数据复制到csv

我需要一个python代码将excel文件中的数据复制到csv 没有什么,我需要代码,请给我发送 3 个代码,我对这个问题感到非常不安,任何人都可以分享这个问题的答案,我非常紧急......

回答 1 投票 0

快速排序算法 - JavaScript。我被卡住了:(

有人能告诉我为什么这会产生无限循环吗?我被困住了。 玛比,我错过了什么吗? const QuickSort = 函数 (arr) { if (arr.length < 2) { return arr; } const pivot = arr[0]; const

回答 1 投票 0

使用辅助列表对链接列表进行快速排序

我需要对链表进行快速排序,问题是我不知道如何连接列表的小边、枢轴和大边。 分区功能有效,我可以划分...

回答 1 投票 0

这个快速排序的代码发生了什么?

我找到了这个快速排序的代码实现我想问:代码中粗体部分是做什么的?正在检查数组的左右部分是否有未排序的元素?

回答 1 投票 0

Hoare 的 Partition 原始方法和 ALGOL 代码 [已关闭]

所以我正在阅读 Quicksort wiki 的霍尔分区部分,它说: “对于这个原始描述,实现通常会做出微小但重要的变化。值得注意的是,

回答 1 投票 0

Hoare 的分区原始方法

所以我正在阅读 Quicksort wiki 的霍尔分区部分,它说: “对于这个原始描述,实现通常会做出微小但重要的变化。值得注意的是,

回答 1 投票 0

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