常用五种排序方法 冒泡排序、快速排序、插入排序、希尔排序、归并排序
常见排序时间复杂度和稳定行

冒泡排序、快速排序、插入排序、希尔排序、归并排序实现
#-*-coding:utf-8-*-
import random
list1 = [random.randint(1, 20) for i in range(10)]
print(list1)
# 冒泡排序(交换排序)
def maopao_sortt(list1):
length = len(list1)
for i in range(length):
for j in range(i+1, length):
if list1[i] > list1[j]:
list1[i], list1[j] = list1[j], list1[i]
return list1
# maopao_sortt(list1)
# print(list1)
# 快速排序(交换排序)
def quick_sort(list1, i, j):
if i>=j:
return list1
pivot = list1[i]
low, height = i, j
while i < j:
while i<j and list1[j] >= pivot:
j -=1
list1[i] = list1[j]
while i<j and list1[i] <= pivot:
i +=1
list1[j] = list1[i]
list1[j] = pivot
quick_sort(list1, low, i-1)
quick_sort(list1, i+1, height)
return list1
# a = quick_sort(list1, 0, len(list1)-1)
# print(a)
# 插入排序(插入排序)
def insert_sort(list1):
for i in range(1, len(list1)):
key = list1[i]
j = i - 1
while j >= 0 and list1[j] > key:
list1[j+1] = list1[j]
j -= 1
list1[j+1] = key
# insert_sort(list1)
# print(list1)
# 希尔排序(插入排序)
def shell_sort(list1):
length = len(list1)
dist = length//2
while dist > 0:
for i in range(dist, length):
key = list1[i]
j = i -dist
while j >= 0 and list1[j] > key:
list1[j + dist] = list1[j]
j -= dist
list1[j + dist] = key
dist //= 2
# shell_sort(list1)
# print(list1)
# 归并排序(归并排序)
def merge(left, right):
result = []
while left and right:
if left[0] < right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
if left:
result += left
if right:
result += right
return result
def merge_sort(list1):
length = len(list1)
if length <= 1:
return list1
mid = length // 2
left, right = merge_sort(list1[:mid]), merge_sort(list1[mid:])
a = merge(left, right)
return a
a = merge_sort(list1)
print(a)

浙公网安备 33010602011771号