0%

Python四大排序算法

冒泡排序,选择排序,插入排序,快速排序

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
alist = list(range(10))
random.shuffle(alist)
print("排序前:",alist)

def bubble(alist):
"""冒泡排序"""
for j in range(0,len(alist)-1):
count = 0
for i in range(0,len(alist)-1-j):
if alist[i]>alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
count += 1
if 0 == count :
break
return alist

alist = bubble(alist)
print("排序后:",alist)

选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
alist = list(range(10))
random.shuffle(alist)
print("排序前:",alist)

def selectionSort(alist):
"""选择排序"""
for i in range(len(alist)-1):
for j in range(i+1,len(alist)):
if alist[i] > alist[j]:
alist[i] , alist[j] = alist[j] , alist[i]

return alist
alist = selectionSort(alist)
print("排序后:",alist)

插入排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
alist = list(range(10))
random.shuffle(alist)
print("排序前:",alist)

def insertSort(alist):
"""插入排序"""
for i in range(1,len(alist)):
for j in range(i,0,-1):
if alist[j-1] > alist[j]:
alist[j] , alist[j-1] = alist[j-1] , alist[j]
else:
break

return alist
alist = insertSort(alist)
print("排序后:",alist)

快速排序

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
alist = list(range(10))
random.shuffle(alist)
print("排序前:",alist)

def fastSort(alist,first,last):
"""快速排序"""
"""
:first 左边开始点
:last 右边结束点
"""

if last <= first:
return
mid_value = alist[first]
left = first
right = last
while left < right:
while left < right and alist[right] >= mid_value:
right -= 1
alist[left] = alist[right]

while left < right and alist[left] < mid_value:
left += 1
alist[right] = alist[left]

# left == right
alist[left] = mid_value

fastSort(alist,first,left-1)
fastSort(alist,left+1,last)

# return alist

fastSort(alist,0,len(alist)-1)
print("排序后:",alist)
-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道