-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquick_sort.py
57 lines (49 loc) · 1.24 KB
/
quick_sort.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#快速排序
import random
#方法一 截断再拼接,感觉有点蠢,见谅。
# def QuickSort(list):
# n = len(list)
#
# if n == 0:
# return []
# if n ==1:
# return list
# curr = 1
# for i in range(1,n):
# if list[i] < list[0]:
# temp = list[i]
# list[i] = list[curr]
# list[curr] = temp
# curr += 1
# temp = list[curr-1]
# list[curr-1] = list[0]
# list[0] = temp
# left = QuickSort(list[:curr-1])
# right = QuickSort(list[curr:])
#
#
# return left + [list[curr-1]] + right
#方法二 直接传入list与指针
def QuickSort(list,left,right):
if right - left <= 1:
return
curr = 1
for i in range(left+1,right):
if list[i] < list[left]:
temp = list[left+curr]
list[left+curr] = list[i]
list[i] = temp
curr += 1
temp = list[left]
list[left] = list[left+curr-1]
list[left+curr-1] = temp
QuickSort(list,left,left+curr-1)
QuickSort(list,left+curr,right)
return list
if __name__ == '__main__':
a = [11,11]
for i in range(10):
a.append(random.randint(1,100))
print(a)
# print(QuickSort(a))
print(QuickSort(a,0,len(a)))