Skip to content

Commit 1fe9acb

Browse files
committed
basic sort
1 parent 17f6081 commit 1fe9acb

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

ehco/basic_sort/basic_sort.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import random
2+
3+
4+
def bubble_sort(seq):
5+
'''O(n^2)'''
6+
n = len(seq)
7+
8+
for i in range(n-1):
9+
print(seq)
10+
for j in range(n-1-i):
11+
if seq[j] > seq[j+1]:
12+
seq[j], seq[j+1] = seq[j+1], seq[j]
13+
print('+++++++++++++bubble++++++++++++++')
14+
return seq
15+
16+
17+
def select_sort(seq):
18+
'''O(n)'''
19+
n = len(seq)
20+
21+
for i in range(n-1):
22+
min_idx = i
23+
for j in range(i+1, n):
24+
if seq[j] < seq[min_idx]:
25+
min_idx = j
26+
if min_idx != i:
27+
seq[i], seq[min_idx] = seq[min_idx], seq[i]
28+
print(seq)
29+
print('+++++++++++++select++++++++++++++')
30+
return seq
31+
32+
33+
def insert_sort(seq):
34+
'''O(n)'''
35+
n = len(seq)
36+
37+
for i in range(0, n):
38+
v = seq[i]
39+
pos = i
40+
while pos > 0 and v < seq[pos-1]:
41+
seq[pos] = seq[pos-1]
42+
pos -= 1
43+
seq[pos] = v
44+
print('+++++++++++++insert++++++++++++++')
45+
return seq
46+
47+
48+
def test_sort():
49+
seq = list(range(10))
50+
random.shuffle(seq)
51+
52+
assert bubble_sort(seq[:]) == sorted(seq)
53+
print("\n\n")
54+
assert select_sort(seq[:]) == sorted(seq)
55+
print("\n\n")
56+
assert insert_sort(seq[:]) == sorted(seq)
57+
58+
59+
if __name__ == "__main__":
60+
test_sort()

0 commit comments

Comments
 (0)