排序算法思维导图
冒泡排序
def bubble_sort(alist):
j = 0
while j < len(alist):
i = 0
while i < len(alist) - 1:
if alist[i] > alist[i+1]:
alist[i], alist[i+1] = alist[i+1], alist[i]
i += 1
j += 1
li = [34,556,235,7,56,45,63,35,23,4,875]
bubble_sort(li)
print(li)
选择排序
def select_sort(alist):
i = 0
while i < len(alist) - 1:
min_idex = i
j = i+1
while j < len(alist):
if alist[min_idex] > alist[j]:
min_idex = j
j += 1
if min_idex != i:
alist[i], alist[min_idex] = alist[min_idex],alist[i]
i += 1
li = [34,556,235,7,56,45,63,35,23,4,875]
select_sort(li)
print(li)
直接插入排序
def insert_sort(alist):
i = 1
while i < len(alist):
temp = alist[i]
j = i
while temp < alist[j-1] and j>0:
alist[j] = alist[j-1]
j -= 1
alist[j] = temp
i += 1
li = [34,556,235,7,56,45,63,35,23,4,875]
insert_sort(li)
print(li)
快速排序
def part(alist,left,right):
p = alist[left]
while left < right:
while alist[right] >= p and left < right:
right -= 1
alist[left] = alist[right]
while alist[left] <= p and left < right:
left += 1
alist[right] = alist[left]
alist[left] = p
return left
def quick_sort(alist,left,right):
if left < right:
p_idex = part(alist,left,right)
quick_sort(alist,left,p_idex-1)
quick_sort(alist,p_idex+1,right)
li = [324,5346,74,523,857,6,2345,457,789]
quick_sort(li,0,len(li)-1)
print(li)