def quickSort(array):
if len(array) <= 1:
return array
p = 0 #pivot
pointer = p + 1
left = []
pivot = []
right = []
pivot.append(array[p])
#devide array into 3 arrays
while pointer < len(array):
if array[pointer] < array[p]:
left.append(array[pointer])
elif array[pointer] > array[p]:
right.append(array[pointer])
else:
pivot.append(array[pointer])
#pointer moves towards right
pointer += 1
#concatenation of the 3 arrays
return (f'{quickSort(left) + pivot + quickSort(right)}')
#测试内容
array = [7,5,8,1]
quickSort(array)
print(array)
#报错内容
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[74], line 2
1 array = [7,5,8,1]
----> 2 quickSort(array)
3 print(array) # das sortierte array
Cell In[73], line 24, in quickSort(array)
21 pointer += 1
23 #concatenation of the 3 arrays
---> 24 return (f'{quickSort(left) + pivot + quickSort(right)}')
TypeError: can only concatenate str (not "list") to str
快速排序代码如下,望采纳
def partition(nums, low, high):
# 进行分区操作,选取第一个值为基准
pivot = nums[low]
i = low
j = high
while i < j:
# j是从右向左走,如果值大于pivot则位置保持不变,j左移
while i < j and nums[j] >= pivot:
j -= 1
# 不满足上述条件时,nums[j]<pivot,应该放在左边,所以将i位置赋值为j
# 此时j位置空出
nums[i] = nums[j]
# I是从左向右走,如果值小于pivot则位置保持不变,i右移
while i < j and nums[i] < pivot:
i += 1
# 不满足上述条件时,nums[i]>=pivot,应该放在右边,所以将h位置赋值为i
# 此时j位置空出
nums[j] = nums[i]
# 将pivot的值放到正确的索引位置
nums[i] = pivot
return i
# 快速排序函数
def quickSort(arr, low, high):
# arr[] --> 排序数组
# low --> 起始索引
# high --> 结束索引
if low < high:
pi = partition(arr, low, high) #pi为基准值的正确索引位置
quickSort(arr, low, pi - 1) #递归的排序子序列
quickSort(arr, pi + 1, high) #递归的排序子序列
return arr