python - RecursionError 限制了我在大数组中的排序功能
问题描述
我需要帮助重写一些递归代码,这样我就不会遇到这个错误:
RecursionError: maximum recursion depth exceeded in comparison
我的算法应该采用一个充满随机整数的数组,并通过翻转整数对它们进行排序。然后它返回它所花费的翻转量。它工作正常,直到我得到大约 2^10 的大小。
def flippers(A, count = 0):
for i in range(1,len(A)):
j=i-1
if(A[j]>A[j+1]):
temp = A[j+1]
A[j+1] = A[j]
A[j] = temp
j += 1
count += 1
for i in range(1,len(A)):
if(A[i]<A[i-1]):
return flippers(A, count)
return count
我知道它并不完美,而且我可能会更好地编写代码。一旦我的数组达到 2^10 的大小,就会出现上述错误。任何帮助表示赞赏。谢谢!
解决方案
由于不需要递归,这是最简单的排序算法:
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[j] < a[i]:
a[i], a[j] = a[j], a[i]
另请注意,在python中,不需要使用temp
在2个变量之间切换,您可以简单地使用a[i], a[j] = a[j], a[i]
推荐阅读
- flutter - 资产图像未显示在颤振应用程序的发布版本中
- python-3.x - 无法安装 deepspeech 服务器
- android - React-Native-Maps 未在 Android 模拟器或真实设备上显示
- c++ - 关于返回多个值的 C++ PPP 练习
- r - R Shiny 中的单个 SliderInput
- aspose - 部署在云端的 .NET 项目中的 Aspose.PDF 和 Aspose.HTML 库
- java - 创建 Lucee 扩展以创建 IBM Informix 连接
- python - 从 Tkinter 标签上的 mysql DB 文件路径查看图像
- javascript - 如何将按钮作为参数传递给函数?
- android - 在 PlayStore 上提交 Cordova 应用程序后出现 NonSdkApiUsedViolation 警告