Merge sort
Merge sort
Recursivo:
Código:
def merge_sort(a):
if len(a) <= 1:
return a
mid = len(a) // 2
l = a[:mid]
r = a[mid:]
l = merge_sort(l)
r = merge_sort(r)
return merge(l, r)
def merge(l, r):
merged = []
lI, rI = 0, 0
while lI < len(l) and rI < len(r):
if l[lI] < r[rI]:
merged.append(l[lI])
lI += 1
else:
merged.append(r[rI])
rI += 1
merged.extend(l[lI:])
merged.extend(r[rI:])
return merged
# Example usage:
a = [11,88,33,44,999,2,5,8,9,6,6]
sorted_a = merge_sort(a)
print(sorted_a)
Ejecucion:
Código:
def merge_sort(a):
if len(a) <= 1:
return a
sortedL = [[x] for x in a]
while len(sortedL) > 1:
mergedL = []
for i in range(0, len(sortedL), 2):
l = sortedL[i]
r = sortedL[i + 1] if i + 1 < len(sortedL) else []
merged = merge(l, r)
mergedL.append(merged)
sortedL = mergedL
return sortedL[0]
def merge(l, r):
merged = []
lI, rI = 0, 0
while lI < len(l) and rI < len(r):
if l[lI] < r[rI]:
merged.append(l[lI])
lI += 1
else:
merged.append(r[rI])
rI += 1
merged.extend(l[lI:])
merged.extend(r[rI:])
return merged
a = [84,587,4,77,3,3,4,5]
sortedA = merge_sort(a)
print(sortedA)
Comentarios
Publicar un comentario