Skip to content

Commit f396d94

Browse files
committed
implementations of bubble sort, insertion sort and selection sort in python
1 parent 80550d6 commit f396d94

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

python/11_sorts/sorts.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
"""
2+
Bubble sort, insertion sort and selection sort
3+
冒泡排序、插入排序、选择排序
4+
5+
Author: Wenru
6+
"""
7+
8+
from typing import List
9+
10+
# 冒泡排序
11+
def bubble_sort(a: List[int]):
12+
if len(a) <= 1: return
13+
14+
made_swap = False
15+
for i in range(len(a)):
16+
for j in range(len(a) - i - 1):
17+
if a[j] > a[j+1]:
18+
a[j], a[j+1] = a[j+1], a[j]
19+
made_swap = True
20+
if not made_swap: break
21+
22+
# 插入排序
23+
def insertion_sort(a: List[int]):
24+
if len(a) <= 1: return
25+
26+
for i in range(1, len(a)):
27+
value = a[i]
28+
j = i - 1
29+
while j >= 0 and a[j] > value:
30+
a[j+1] = a[j]
31+
j -= 1
32+
a[j+1] = value
33+
34+
# 选择排序
35+
def selection_sort(a: List[int]):
36+
if len(a) <= 1: return
37+
38+
for i in range(len(a)):
39+
min_index = i
40+
min_val = a[i]
41+
for j in range(i, len(a)):
42+
if a[j] < min_val:
43+
min_val = a[j]
44+
min_index = j
45+
a[i], a[min_index] = a[min_index], a[i]
46+
47+
48+
if __name__ == "__main__":
49+
array = [1, 1, 1, 1]
50+
bubble_sort(array)
51+
print(array)
52+
53+
array = [1, 2, 3, 4]
54+
bubble_sort(array)
55+
print(array)
56+
57+
array = [4, 3, 2, 1]
58+
bubble_sort(array)
59+
print(array)
60+
61+
array = [5, 6, -1, 4, 2, 8, 10, 7, 6]
62+
bubble_sort(array)
63+
print(array)
64+
65+
array = [1, 1, 1, 1]
66+
insertion_sort(array)
67+
print(array)
68+
69+
array = [1, 2, 3, 4]
70+
insertion_sort(array)
71+
print(array)
72+
73+
array = [4, 3, 2, 1]
74+
insertion_sort(array)
75+
print(array)
76+
77+
array = [5, 6, -1, 4, 2, 8, 10, 7, 6]
78+
insertion_sort(array)
79+
print(array)
80+
81+
array = [1, 1, 1, 1]
82+
selection_sort(array)
83+
print(array)
84+
85+
array = [1, 2, 3, 4]
86+
selection_sort(array)
87+
print(array)
88+
89+
array = [4, 3, 2, 1]
90+
selection_sort(array)
91+
print(array)
92+
93+
array = [5, 6, -1, 4, 2, 8, 10, 7, 6]
94+
selection_sort(array)
95+
print(array)

0 commit comments

Comments
 (0)