-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsort.py
More file actions
96 lines (75 loc) · 2.2 KB
/
sort.py
File metadata and controls
96 lines (75 loc) · 2.2 KB
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
def selection(arr):
n = len(arr)
for i in range(n):
ind0 = i
for j in range(i+1,n):
if arr[ind0] > arr[j]:
ind0 = j
arr[i], arr[ind0] = arr[ind0],arr[i]
return arr
def bubble(arr):
n = len(arr)
for i in range(n):
for j in range(1,n):
if arr[j-1] > arr[j]:
arr[j-1],arr[j] = arr[j], arr[j-1]
return arr
def insertion(arr):
n = len(arr)
for i in range(1,n):
a = arr[i]
print("arr",i,"=",a)
j = i-1
while j>= 0 and a < arr[j]:
arr[j+1] = arr[j]
j-=1
print("insert before/stay:",arr[j+1])
arr[j+1] = a
print(arr)
return arr
class QSort:
def __init__(self, arr):
self.low = 0
self.arr = arr
self.high = len(self.arr)-1
self.sort = self.recurve(self.low, self.high, self.arr)#Call
def recurve(self, low, high, arr):
if low < high:
pi = self.quick(low, high, arr)
self.recurve(low, pi-1, arr)
self.recurve(pi+1, high, arr)
return arr
def quick(self, low, high, arr):
i = low-1
for j in range(low, high):
if arr[j] < arr[high]:
i = i+1
arr[i], arr[j] = arr[j],arr[i]
arr[i+1], arr[high] = arr[high],arr[i+1]
return i+1
##from time import time as t
import numpy.random as np
abc = np.randint(0,100,10)
print(abc)
print('\n',"sorted:",insertion(abc))
##def record(a):
## from time import time as t
## start = t()
## for i in range(10):
## import numpy.random as np
## abc = np.randint(0,1000,200)
## a(abc)
## i+=1
##
## return (t()-start)/i
##
##print("Bubble",record(bubble),'\n', "Insertion",record(insertion), '\n',"Selection",record(selection))
##
##from time import time as t
##start = t()
##for i in range(10):
## import numpy.random as np
## abc = np.randint(0,1000,200)
## QSort(abc).sort
## i+=1
##print('',"Qsort",(t()-start)/i)