1. Exercicis resolts tema 10
Exercici 10.11
Podeu provar de fer les ordenacions de la pràctica 6 amb aquesta funció veureu que l'odre es O(n log n) veureu que ràpid ordena.
1 def mergesort(l):
2 if len(l) < 2:
3 return l
4
5 else :
6 mitj= len(l)/2
7 esq= mergesort(l[:mitj])
8 dret = mergesort(l[mitj:])
9 return merge(esq,dret)
10
11
12 def merge(left,right):
13
14 result=[]
15 i,j = 0,0
16
17 while i < len(esq) and j < len(dret):
18 if esq[i] <= dret[j]:
19 result.append(esq[i])
20 i= i +1
21
22 else:
23 result.append(dret[j])
24 j= j +1
25
26 result= result + esq[i:]
27 result= result + dret[j:]
28 return result