Browse Source

Merge de implementación de Shell sort

parent
commit
70ec22ea7c
1 changed files with 35 additions and 3 deletions
  1. 35
    3
      sorting.py

+ 35
- 3
sorting.py View File

10
 from random import randint
10
 from random import randint
11
 import time
11
 import time
12
 
12
 
13
+def isSorted(lista):
14
+    return lista == sorted(lista)
15
+
13
 def mergeSort(lista):
16
 def mergeSort(lista):
14
 	#definan el algoritmo de ordenamiento mergesort
17
 	#definan el algoritmo de ordenamiento mergesort
15
 	return lista
18
 	return lista
22
 	#definan el algoritmo de ordenamiento quicksort
25
 	#definan el algoritmo de ordenamiento quicksort
23
 	return lista
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
 def shellSort(lista):
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
 maxValor=1000 	#define el valor maximo de los elementos de la lista
62
 maxValor=1000 	#define el valor maximo de los elementos de la lista
30
 largoLista=1000 #define el largo de las listas a ordenar
63
 largoLista=1000 #define el largo de las listas a ordenar
66
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
99
 print "HeapSort " + str(acumulaHeap/veces) + " segundos"
67
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
100
 print "QuickSort " + str(acumulaQuick/veces) + " segundos"
68
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
101
 print "ShellSort " + str(acumulaShell/veces) + " segundos"
69
-