- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 Python 中编写了以下用于快速排序的代码,但出现RecursionError: maximum recursion depth exceeded in comparison。在运行另一个具有相同逻辑的代码时,它运行良好。
下面是我写的代码:
def partition(Arr,start,end):
pivot=Arr[end]
pindex=start
for i in range(start,end):
if Arr[i] <= pivot:
Arr[i],Arr[pindex] = Arr[pindex],Arr[i]
pindex += 1
#print("pindex",pindex)
Arr[pindex],Arr[end]=Arr[end],Arr[pindex]
return pindex
def QuickSort(Arr,start,end):
if(start>=end):
return Arr
if (start<end):
pindex=partition(Arr,start,end)
QuickSort(Arr, start, pindex-1)
QuickSort(Arr, pindex-1, end)
Array = [10, 7, 8, 9, 1, 5]
start=0
end=len(Array)-1
sort_Arr=QuickSort(Array,start,end)
print ("Sorted array is: {}",sort_Arr)
下面是运行良好的 GeeksforGeeks 的代码:
# This function takes last element as pivot, places
# the pivot element at its correct position in sorted
# array, and places all smaller (smaller than pivot)
# to left of pivot and all greater elements to right
# of pivot
def partition(arr,low,high):
i = ( low-1 ) # index of smaller element
pivot = arr[high] # pivot
for j in range(low , high):
# If current element is smaller than or
# equal to pivot
if arr[j] <= pivot:
# increment index of smaller element
i = i+1
arr[i],arr[j] = arr[j],arr[i]
arr[i+1],arr[high] = arr[high],arr[i+1]
return ( i+1 )
# The main function that implements QuickSort
# arr[] --> Array to be sorted,
# low --> Starting index,
# high --> Ending index
# Function to do Quick sort
def quickSort(arr,low,high):
if low < high:
# pi is partitioning index, arr[p] is now
# at right place
pi = partition(arr,low,high)
# Separately sort elements before
# partition and after partition
quickSort(arr, low, pi-1)
quickSort(arr, pi+1, high)
以下是回溯:
Traceback (most recent call last):
File "QuickSort.py", line 55, in <module>
sort_Arr=QuickSort(Array,start,end)
File "QuickSort.py", line 46, in QuickSort
QuickSort(Arr, pindex-1, end) #Sorting Array elements after pivot point which are value>pivot
File "QuickSort.py", line 44, in QuickSort
QuickSort(Arr, start, pindex-1) #Sorting Array elements before pivot point which are value<=pivot
File "QuickSort.py", line 46, in QuickSort
QuickSort(Arr, pindex-1, end) #Sorting Array elements after pivot point which are value>pivot
File "QuickSort.py", line 46, in QuickSort
QuickSort(Arr, pindex-1, end) #Sorting Array elements after pivot point which are value>pivot
File "QuickSort.py", line 46, in QuickSort
QuickSort(Arr, pindex-1, end) #Sorting Array elements after pivot point which are value>pivot
[Previous line repeated 990 more times]
File "QuickSort.py", line 41, in QuickSort
pindex=partition(Arr,start,end) #Calculating partition Index point by calling partition Function
File "QuickSort.py", line 22, in partition
for i in range(start,end):
RecursionError: maximum recursion depth exceeded in comparison
谁能帮我解决这个问题?为什么我的代码没有运行?任何建议表示赞赏。
最佳答案
您已选择用 start,end
表示数组中的范围,其中 end
是最后一个元素的索引。因此这段代码
QuickSort(Arr, start, pindex-1)
QuickSort(Arr, pindex-1, end)
不会将数组分成两个不相交的部分 -- pindex-1
将在两个部分中,并且递归不会终止,因为第二部分的大小永远不会变为一。
更好的约定是让 end
指向最后一个元素之后。 Dijkstra can explain why in more detail.
关于python - Python 中的快速排序抛出 RecursionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801185/
当我收到此错误时,此递归阶乘计算器一直运行良好,直到输入 994:“RecursionError:比较时超出最大递归深度”。有人可以解释一下这是什么意思吗?递归的最大数量怎么可能?提前致谢。 def
我正在尝试使用递归函数迭代嵌套字典,但是我最终收到一条消息,上面写着 RecursionError: maximum recursion depth exceeded while calling a
我正在尝试编写一个由任意数量的 lambda 函数组成的函数。 我有两个简单的 lambda 函数。 f = lambda x: x + 1 g = lambda x: x**2 我对组合函数的尝试是
import random class cards(): def __init__(self,val,suit): self.val = val self.su
我在 Python 中编写了以下用于快速排序的代码,但出现RecursionError: maximum recursion depth exceeded in comparison。在运行另一个具有
所以我尝试使用 sys.getrecursionlimit() 和 sys.setrecursionlimit() 方法。默认递归限制为 3000。 我尝试使用以下代码对其进行检查: def recu
我有一个 python 应用程序,它可以在 python 上完美运行,但在运行 cythonized 脚本时出现错误。 当我用 cython 编译脚本时,一切都编译正常,我在带有 Linux 的 Ra
代码如下所示。我只知道 RecursionError 的原因是 student.age 在 Descriptor 中以无限循环调用 __get__ 。但是,我既不知道根本原因,也不知道解决方案。 我该
简单的代码: from PyDAQmx import Task task = Task() 加薪: File "C:\Users\Adrian\Anaconda3\lib\site-packages
我一直在尝试使用 PyQt5 库开发一个多窗口应用程序。我想有一个专门用于单独功能的第二个窗口。我能够从主窗口切换到辅助窗口,没有任何问题。但是在尝试切换回来后,我得到了递归错误异常。这是相关的代码:
我使用以下代码来计算斐波那契数列的元素。代码按原样正常工作 def fib(n, lookup=dict()): if n == 0 or n == 1: lookup[n]
我正在使用谷歌colab。我已经做了很多次我想做的事情,所以我不知道为什么它现在不起作用。 我所做的就是制作一个包含大约 1000 个键的字典,每个值都是 4 个字符串的列表。我已经确认这本词典正是我
所以,我有一个函数,它的目的是为被逗号包围的单词着色。 def __init__(...something): ...something self.user_i
我正在使用 tkinter 学习,这涉及形状的流畅运动。这就是我现在陷入困境的地方。 我收到不一致的递归错误。该代码在 Windows 1O 上运行没有问题,但在我的 macOS 上它崩溃了。 此外,
我得到了以下代码来详细说明我的问题。我正在使用 python 3.6 和 pandas==0.25.3。 import pandas as pd from enum import Enum, IntE
出于单元测试的目的,我创建了一个类,其实例是一个可迭代的,它将产生特定的序列,然后引发异常: class Iter: def __init__(self, seq): self
我运行了一个用于 MNIST 分类的神经网络模型并收到了错误- RecursionError: maximum recursion depth exceeded 我检查了一些关于 stackoverf
我定义了一个名为 spam 的类: class spam(): def __str__(self): print(self) a = spam() print(a) 最后的打印
我为 Tornado RequestHandler 编写了一个辅助装饰器: def return_response(method): @wraps(method) async def
我尝试运行下面的代码 import math import random from matplotlib import pyplot as plt from collections import Co
我是一名优秀的程序员,十分优秀!