sort_code


常用的排序算法:

#bubbleSort
1
2
3
4
5
6
7
8
9
10
arr = [5,4,1,7,2,0,3,0,6]
def (arr):
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-1-i):
if arr[j] > arr[j+1]:
t = arr[j]
arr[j] = arr[j+1]
arr[j+1] = t
bubbleSort(arr)
print(arr)
#mergeSort
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
arr = [5,4,1,7,2,0,3,0,6]
def mergeSort(arr,l,r):
if l == r:
return
m = (l+r)//2
mergeSort(arr,l,m)
mergeSort(arr,m+1,r)
merge(arr,l,m,r)
def merge(arr,l,m,r):
help = [None]*(r-l+1)
i = 0
p1 = l
cur = m+1
while p1 <= m and cur <= r:
if arr[p1] <= arr[cur]:
help[i] = arr[p1]
p1 += 1
i += 1
else:
help[i] = arr[cur]
cur += 1
i += 1
while p1 <= m:
help[i] = arr[p1]
p1 += 1
i += 1
while cur <= r:
help[i] = arr[cur]
cur += 1
i += 1
for i in range(0,len(help)):
arr[l+i] = help[i]
i += 1
mergeSort(arr,0,len(arr)-1)
print(arr)
#堆排
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def headAdjuest(arr,arrsize,deep):
m = deep
lc = 2*deep + 1
rc = lc + 1
if lc < arrsize and arr[lc] > arr[m]:
m = lc
if rc < arrsize and arr[rc] > arr[m]:
m = rc
if m != deep:
arr[m],arr[deep] = arr[deep],arr[m]
headAdjuest(arr,arrsize,m)
def build_headSort(arr):
for i in range(len(arr)//2,-1,-1):
headAdjuest(arr,len(arr),i)
def headSort(arr):
build_headSort(arr)
for i in range(len(arr)-1,-1,-1):
arr[0],arr[i] = arr[i],arr[0]
headAdjuest(arr,i,0)
headSort(arr)
print(arr)
#快排
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def quickSort(arr,low,high):
if low < high:
key_index = partion(arr,low,high)
quickSort(arr,low,key_index)
quickSort(arr,key_index+1,high)
def partion(arr,low,high):
key = arr[low]
while low < high and arr[high] >= key:
high -= 1
if low < high:
arr[low] = arr[high]
while low < high and arr[low] < key:
low += 1
if low < high:
arr[high] = arr[low]
arr[low] = key
return low
quickSort(arr,0,len(arr)-1)
print(arr)
#selectionSort
1
2
3
4
5
6
7
8
9
def selectionSort(arr):
for i in range(0,len(arr)-1):
for j in range(i+1,len(arr)):
if arr[i] > arr[j]:
t = arr[i]
arr[i] = arr[j]
arr[j] = t
selection(arr)
print(arr)
#InsertSort
1
2
3
4
5
6
7
8
9
def insertSort(arr):
for i in range(1,len(arr)):
for j in range(i-1,-1,-1):
if arr[j] > arr[j+1]:
t = arr[j]
arr[j] = arr[j+1]
arr[j+1] = t
insertSort(arr)
print(arr)