[英]Partitioning an array in placein Python
我尝试分区(就地)无序数组 a 和固定元素(枢轴)。
输入:[1、3、6、1、5、4]
结果应如下所示: [1, 1, 3, 4, 5, 6 ]
相反,我得到了这个: [1, 6, 1, 3, 5, 4]
有没有办法递归地解决它?
这是我的代码:
def swap(a, i, j):
a[i], a[j] = a[j], a[i]
def Part(a, pivot):
n = len(a)
i = - 1
j = 0
for j in range(n):
if a[j] <= a[pivot]:
swap(a, i + 1, j)
i = i + 1
j = j + 1
else:
j + 1
swap(a, i+1, pivot)
return i+1
此代码完成您的工作。
def sort(testVariable, length):
# Base case
if length <= 1 :
return
# Recursive case
# Sort first n-1 elements
sort(testVariable, length - 1)
# Insert last element at its correct position in sorted array
lastElement = testVariable[length - 1] # fetch the last element
temp = length - 2 # start finding its correct location from one element before it
# Move elements of testVariable[0..i-1], that are greater than key, to one position ahead of their current position
while (temp >= 0 and testVariable[temp] > lastElement):
testVariable[temp + 1] = testVariable[temp]
temp = temp - 1
testVariable[temp + 1] = lastElement # place the element in its correct position
# Driver Code
testVariable = [5, 4, 2, 3, 1, 1]
print("Original Array ---> " + str(testVariable))
sort(testVariable, len(testVariable))
print("Modified Array ---> " + str(testVariable))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.