defquicksort(arr):iflen(arr)<=1:return arr
pivot = arr[len(arr)//2]
left =[x for x in arr if x < pivot]
middle =[x for x in arr if x == pivot]
right =[x for x in arr if x > pivot]return quicksort(left)+ middle + quicksort(right)# 示例使用
example_list =[3,6,8,10,1,2,1,4,7,5]
sorted_list = quicksort(example_list)print(sorted_list)# 输出: [1, 1, 2, 3, 4, 5, 6, 7, 8, 10]
5.归并排序
defmerge_sort(arr):iflen(arr)<=1:return arr
mid =len(arr)//2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)return merge(left, right)defmerge(left, right):
result =[]
i, j =0,0while i <len(left)and j <len(right):if left[i]< right[j]:
result.append(left[i])
i +=1else:
result.append(right[j])
j +=1
result += left[i:]
result += right[j:]return result
# 使用示例
arr =[5,3,4,1,2]
sorted_arr = merge_sort(arr)print(sorted_arr)# 输出: [1, 2, 3, 4, 5]
6.插入排序
definsertion_sort(arr):for i inrange(len(arr)):
pre_index = i -1
current = arr[i]while pre_index >=0and arr[pre_index]> current:
arr[pre_index +1]= arr[pre_index]
pre_index -=1
arr[pre_index +1]= current
return arr
# 示例使用
example_list =[10,5,3,8,2,6]
sorted_list = insertion_sort(example_list)print(sorted_list)# 输出: [2, 3, 5, 6, 8, 10]
7.选择排序
defselection_sort(arr):for i inrange(len(arr)):# 寻找最小元素的索