声明:转载附作者Id及原作品链接
Python列表对象自带基于快速排序算法的sort方法。
无需重复造轮子,以下为拓展学习。
递归方法比较常见,代码简洁易懂。
迭代方法不止一种,在迭代中体现分而治之的思想。
另外,迭代时需记录函数状态。
这既是快速排序的精髓,也是递归的精髓。
def quick_sort_1(arr):
#递归实现
if len(arr)<2:
return arr
base=int(len(arr)/2)
left_array=[]
right_array=[]
base_array=[]
for i in range(len(arr)):
if arr[i]
left_array.append(arr[i])
if arr[i]>arr[base]:
right_array.append(arr[i])
if arr[i]==arr[base]:
base_array.append(arr[base])
return quick_sort_1(left_array)+base_array+quick_sort_1(right_array)
def quick_sort_2(ARR):
#迭代实现
def divide(arr):
base=int(len(arr)/2)
left_array=[]
base_array=[]
for i in range(len(arr)):
if arr[i]
left_array.append(arr[i])
if arr[i]==arr[base]:
base_array.append(arr[base])
return left_array,base_array
#元组形式返回
new_array=[]
while ARR:
left=divide(ARR)[0]
base=divide(ARR)[1]
while len(left)>1:
base=divide(left)[1]
left=divide(left)[0]
if left:
new_array.append(left[0])
ARR.remove(left[0])
#移除元素
if base:
new_array.append(base[0])
ARR.remove(base[0])
return new_array
array=[9,5,5,5,5,3,2,1,0]
print(quick_sort_1(array))
print(quick_sort_2(array))
代码至此结束此栏目旨在共享自学之乐,共勉求知之友,共塑网站和谐好学的形象。
欢迎大家在评论区发表合理的意见和指正。
如果觉得该栏目对您有帮助,望不吝点赞收藏。