python - 在这个快速排序算法代码中,我一直试图找出为什么 NumPy 数组总是有效而 python 列表有时会失败?
问题描述
这是一种快速排序算法。将任何 NumPy 数组作为任何大小的输入都可以正常工作。
def quick_sort(A):
# partitioning array
n = len(A) # size/length of array i.e. input
p = 0 # pointer on pivot - suppose 1st element is our pivot
i = p + 1 # pointer on partition border i.e. next possible swap
for j in range(1,n):
if A[p] > A[j]:
A[i], A[j] = A[j], A[i]
i += 1
A[p], A[i-1] = A[i-1], A[p]
# recursive call on left side of pivot (smaller than pivot)
if len(A[0:(i-1)]) > 1:
quick_sort(A[0:(i-1)])
# recursive call on right side of pivot (greater than pivot)
if len(A[(i-1):]) > 1:
quick_sort(A[i:])
return A
但有时当输入是 Python 列表时它会失败。
试试这个用于任何大小的 NumPy 输入:
A = np.random.randint(20, size=10)
它适用于 NumPy 数组!但是当输入是这样的 Python 列表时,它并不总是有效:
[40, 6, 0, 99, 33]
非常感谢您的提示或答案。
解决方案
推荐阅读
- javascript - 错误:
属性 cx:预期长度,“NaN” - python - 预测模型在训练和测试期间表现得非常好,但在预测完全相同的数据时预测为零
- linux - 我对 LFS 中的目录布局很好奇。如果 LFS 是纯 64 位系统,为什么我们不能使用 lib64 作为 LFS 中的默认目录?
- android - 未解决的参考:添加依赖项后 iosMain 目录中的 squareup
- scala - spark hive 获取外部分区文件位置
- android - 有没有办法从 Android 连接到本地主机?
- python - 列出 python 包中包含的所有文件(相当于 'git ls-files')
- android - Android Studio 无法上网
- typescript - BaseEntity 类字段不被子级继承
- java - Completablefuture 异常处理的问题