|
@@ -22,9 +22,33 @@ def quickSort(lista):
|
22
|
22
|
|
23
|
23
|
return lista
|
24
|
24
|
|
25
|
|
-def shellSort(lista):
|
26
|
|
-
|
27
|
|
- return lista
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+def shellSort(lst):
|
|
28
|
+
|
|
29
|
+ gap = len(lst)
|
|
30
|
+
|
|
31
|
+ while 0 < gap:
|
|
32
|
+
|
|
33
|
+ for start in range(gap):
|
|
34
|
+ f = range(start, len(lst), gap)
|
|
35
|
+ s = range(start + gap, len(lst), gap)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+ swapped = True
|
|
39
|
+ while swapped:
|
|
40
|
+ swapped = False
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+ for c, n in zip(f, s):
|
|
44
|
+ if lst[n] < lst[c]:
|
|
45
|
+ lst[c], lst[n] = lst[n], lst[c]
|
|
46
|
+ swapped = True
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+ gap = gap // 2
|
|
50
|
+
|
|
51
|
+ return lst
|
28
|
52
|
|
29
|
53
|
|
30
|
54
|
|