소스 검색

Merge de implementación de Shell sort

부모
커밋
70ec22ea7c
1개의 변경된 파일35개의 추가작업 그리고 3개의 파일을 삭제
  1. 35
    3
      sorting.py

+ 35
- 3
sorting.py 파일 보기

@@ -10,6 +10,9 @@ Al final se imprimen los promedios de cada algortimo
10 10
 from random import randint
11 11
 import time
12 12
 
13
+def isSorted(lista):
14
+    return lista == sorted(lista)
15
+
13 16
 def mergeSort(lista):
14 17
 	#definan el algoritmo de ordenamiento mergesort
15 18
 	return lista
@@ -22,9 +25,39 @@ def quickSort(lista):
22 25
 	#definan el algoritmo de ordenamiento quicksort
23 26
 	return lista
24 27
 
28
+def insertionSort(lista):
29
+
30
+    i = 1
31
+    while i < len(lista):
32
+        if lista[i - 1] > lista[i]:
33
+            j = i - 1
34
+            while j >= 0 and lista[j] > lista[j + 1]:
35
+                lista[j], lista[j + 1] = lista[j + 1], lista[j]
36
+                j -= 1
37
+        i += 1
38
+
39
+    return lista
40
+
25 41
 def shellSort(lista):
26
-	#definan el algoritmo de ordenamiento shellsort
27
-	return lista
42
+
43
+    gap = len(lista) / 2
44
+    while gap >= 1:
45
+        i = gap
46
+        while i < len(lista):
47
+            if lista[i - gap] > lista[i]:
48
+                j = i - gap
49
+                while j >= 0 and lista[j] > lista[j + gap]:
50
+                    lista[j], lista[j + gap] = lista[j + gap], lista[j]
51
+                    j -= gap
52
+            i += gap
53
+        gap /= 2
54
+
55
+    #if isSorted(lista):
56
+        #print "Lista is sorted"
57
+    #else:
58
+        #print "Lista is not sorted"
59
+
60
+    return lista
28 61
 
29 62
 maxValor=1000 	#define el valor maximo de los elementos de la lista
30 63
 largoLista=1000 #define el largo de las listas a ordenar
@@ -66,4 +99,3 @@ print "MergeSort " + str(acumulaMerge/veces) + " segundos"
66 99
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
67 100
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
68 101
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
69
-