算法回顾

回顾一下4个基本算法:冒泡,选择,插入,快速

冒泡算法

1
2
3
4
5
6
7
8
def bubble_sort(arr):
length = len(arr)
for i in range(1,length+1):
for j in range(1,length-i+1):
if arr[j-1]>arr[j]:
arr[j-1],arr[j] = arr[j],arr[j-1]

return arr

img

选择排序

1
2
3
4
5
6
7
def  select_sort(arr):
length = len(arr)
for i in range(length):
for j in range(i+1,length):
if arr[i]>arr[j]:
arr[i],arr[j] = arr[j],arr[i]
return arr

img

插入排序

1
2
3
4
5
6
7
8
9
10
11
12
# 插入排序,是跟前一个比较 比前一个小就往前移动
def insert_sort(arr):
length = len(arr)

for i in range(1,length):
loop_index = i
while loop_index>0 and arr[loop_index-1]>arr[loop_index]:
count+=1
arr[loop_index-1] ,arr[loop_index] = arr[loop_index],arr[loop_index-1]
loop_index -=1

return arr

img

快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 快速排序

def quick_sort(arr):

length = len(arr)
if length <= 1:
return arr
else:
middle = arr.pop()
bigs,smalls = [],[]
for i in arr:

if i <middle:
smalls.append(i)
else:
bigs.append(i)
return quick_sort(smalls) + [middle] + quick_sort(bigs)

img