list_2 = [3, 2, 9, 10, 5]
def bubble_sort(list_1):
for i in range(len(list_1) - 1):
for j in range(len(list_1) - i - 1):
if list_1[j] < list_1[j+1]:
list_1[j], list_1[j+1] = list_1[j+1], list_1[j]
return list_1
def select_sort(list_1):
for i in range(len(list_1)):
for j in range(i + 1, len(list_1)):
if list_1[i] > list_1[j]:
list_1[i], list_1[j] = list_1[j], list_1[i]
print(list_1)
return list_1
def insert_sort(list_1):
for i in range(1, len(list_1)):
index = i
while list_1[index -1] > list_1[index ] and index - 1 >= 0:
list_1[index ], list_1[index -1] = list_1[index -1], list_1[index ]
index -= 1
return list_1
# 快速排序第一种方法,递归。简单易懂,推荐
def quicksort(array):
if len(array) < 2:
return array # 基线条件:为空或只包含一个元素的数组是“有序”的
else:
pivot = array[0] # 递归条件
less = [i for i in array[1:] if i <= pivot] # 由所有小于基准值的元素组成的子数组
greater = [i for i in array[1:] if i > pivot] # 由所有大于基准值的元素组成的子数组
return quicksort(less) + [pivot] + quicksort(greater)
#快速排序第二种方法,一步步实现
def quick_sort(nums, left, right):
if left < right:
i = left
j = right
# 取第一个元素为枢轴量
pivot = nums[left]
while i != j:
# 交替扫描和交换
# 从右往左找到第一个比枢轴量小的元素,交换位置
while j > i and nums[j] > pivot:
j -= 1
if j > i:
# 如果找到了,进行元素交换
nums[i] = nums[j]
i += 1
# 从左往右找到第一个比枢轴量大的元素,交换位置
while i < j and nums[i] < pivot:
i += 1
if i < j:
nums[j] = nums[i]
j -= 1
# 至此完成一趟快速排序,枢轴量的位置已经确定好了,就在i位置上(i和j)值相等
nums[i] = pivot
# 以i为枢轴进行子序列元素交换
quick_sort(nums, left, i-1)
quick_sort(nums, i+1, right)
return nums
print(quick_sort(list_2, 0, len(list_2) - 1))
python实现冒泡排序、选择排序、插入排序、快速排序
最新推荐文章于 2022-07-20 20:59:22 发布