Skip to content

Commit 2b5e13f

Browse files
committed
modify sth
1 parent 038e318 commit 2b5e13f

File tree

6 files changed

+67
-5
lines changed

6 files changed

+67
-5
lines changed

Algorithm/sort/bubble-sort.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ def bubble_sort(L):
77
冒泡排序主要使用两次循环实现排序。
88
外循环中的一个数字依次与内层循环中的每个数字进行比较,如果索引值小的数字大于索引值大的数字,交换位置。否则,位置不变。直至外循环结束。
99
'''
10-
if len(L) < 2: # 列表内元素低于2,直接返回!
10+
if len(L) < 2: # 列表内元素低于2,直接返回!
1111
return L
1212
for i in range(len(L)):
1313
for j in range(1, len(L)):
1414
if L[j - 1] > L[j]:
1515
L[j - 1], L[j] = L[j], L[j - 1]
1616
return L
1717

18+
1819
if __name__ == '__main__':
1920
L = [randrange(1000) for _ in range(10)]
2021
print(bubble_sort(L))

Algorithm/sort/insert_sort.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
# coding=utf-8
2+
23
from random import randrange
34

5+
46
def insert_sort(L):
57
if len(L) < 2:
68
return L
9+
710
for i in range(1, len(L)):
811
tmp = L[i]
912
j = i - 1
@@ -14,6 +17,6 @@ def insert_sort(L):
1417

1518
return L
1619

17-
#if __name__ == '__main__':
20+
# if __name__ == '__main__':
1821
# L = [randrange(1000) for _ in range(10)]
1922
# print(insert_sort(L))

Algorithm/sort/merge/merge-sort.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*-coding: utf-8 -*-
22
from random import randrange
33

4+
45
def merge_sort(L):
56
if len(L) < 2:
67
return L
@@ -16,14 +17,41 @@ def merge(left, right):
1617

1718
while right:
1819
merged.append(right.pop(0))
19-
20+
2021
return merged
2122

22-
mid = int(len(L)/2)
23+
mid = int(len(L) / 2)
2324
left = merge_sort(L[:mid])
2425
right = merge_sort(L[mid:])
2526
return merge(left, right)
2627

28+
2729
if __name__ == "__main__":
2830
L = [randrange(1000) for _ in range(10)]
2931
print(merge_sort(L))
32+
33+
# Another
34+
from random import randrange
35+
36+
37+
def merge_sort(seq):
38+
mid = len(seq) // 2
39+
lft, rgt = seq[:mid], seq[mid:]
40+
if len(lft) > 1:
41+
lft = merge_sort(lft)
42+
if len(rgt) > 1:
43+
rgt = merge_sort(rgt)
44+
45+
res = []
46+
while lft and rgt:
47+
if lft[-1] >= rgt[-1]: # 取lft和rgt序列中最大的值
48+
res.append(lft.pop())
49+
else:
50+
res.append(rgt.pop())
51+
res.reverse() # 反序一下
52+
return (lft or rgt) + res
53+
54+
55+
if __name__ == '__main__':
56+
seq = [randrange(100) for _ in range(10)]
57+
print(merge_sort(seq))

Algorithm/sort/merge/merge-sort1.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,18 @@
2121
>>> list(merge(['dog', 'horse'], ['cat', 'fish', 'kangaroo'], key=len))
2222
['dog', 'cat', 'fish', 'horse', 'kangaroo']
2323
'''
24+
25+
2426
def merge_sort(L):
2527
if len(L) < 2:
2628
return L
2729

28-
mid = int(len(L)/2)
30+
mid = int(len(L) / 2)
2931
left = merge_sort(L[:mid])
3032
right = merge_sort(L[mid:])
3133
return list(merge(left, right))
3234

35+
3336
if __name__ == "__main__":
3437
L = [randrange(100) for _ in range(10)]
3538
print(merge_sort(L))
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# coding=utf-8
2+
from random import randrange
3+
4+
5+
def merge_sort(seq):
6+
mid = len(seq) // 2
7+
lft, rgt = seq[:mid], seq[mid:]
8+
if len(lft) > 1:
9+
lft = merge_sort(lft)
10+
if len(rgt) > 1:
11+
rgt = merge_sort(rgt)
12+
13+
res = []
14+
while lft and rgt:
15+
if lft[-1] >= rgt[-1]: # 取lft和rgt序列中最大的值
16+
res.append(lft.pop())
17+
else:
18+
res.append(rgt.pop())
19+
res.reverse() # 反序一下
20+
return (lft or rgt) + res
21+
22+
23+
if __name__ == '__main__':
24+
seq = [randrange(100) for _ in range(10)]
25+
print(merge_sort(seq))

Algorithm/sort/quick-sort.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# coding=utf-8
22
import random
33

4+
45
def quick_sort(seq):
56
if len(seq) < 2:
67
return seq
@@ -10,6 +11,7 @@ def quick_sort(seq):
1011
big = [x for x in seq if x > mid]
1112
return quick_sort(small) + [mid] + quick_sort(big)
1213

14+
1315
if __name__ == '__main__':
1416
L = [random.randrange(1000) for _ in range(10)]
1517
print(quick_sort(L))

0 commit comments

Comments
 (0)