MergeSort mit alphabetischer Wortliste
Verfasst: Sonntag 16. Mai 2021, 15:48
Im Ramen des Informatikunterrichts soll ich einen Sortieralgorithmus (Merge Sort) programmieren, welcher mir Wortlisten in komplett alphabetisch sortierter Reihenfolge wieder ausgibt. Dabei bin ich allerdings auf das Problem gestoßen, dass mein Programm dabei nur die ersten Buchstaben berücksichtigt und ich bin ehrlich gesagt nicht gut genug, um das Problem selber zu finden :/
Hier ist das Programm:
import timeit
start = timeit.timeit()
def merge_sort(array):
if len(array) <= 1:
return array
midpoint = int(len(array) / 2)
left, right = merge_sort(array[:midpoint]), merge_sort(array[midpoint:])
return merge(left, right)
def merge(left, right):
result = []
left_pointer = right_pointer = 0
while left_pointer < len(left) and right_pointer < len(right):
if left[left_pointer] < right[right_pointer]:
result.append(left[left_pointer])
left_pointer += 1
else:
result.append(right[right_pointer])
right_pointer += 1
result.extend(left[left_pointer:])
result.extend(right[right_pointer:])
return result
def main():
array = ['ade', 'htzre', 'fgrs', 'kmvirj', 'lsdnr']
print(array)
result = merge_sort(array)
print(result)
if __name__ == "__main__":
main()
end = timeit.timeit()
print (end-start)
Ich hoffe jemand kann mir dabei wenigstens einen Hinweis geben, weil ich sonst absolut nicht weiter komme. Danke im Voraus!
Hier ist das Programm:
import timeit
start = timeit.timeit()
def merge_sort(array):
if len(array) <= 1:
return array
midpoint = int(len(array) / 2)
left, right = merge_sort(array[:midpoint]), merge_sort(array[midpoint:])
return merge(left, right)
def merge(left, right):
result = []
left_pointer = right_pointer = 0
while left_pointer < len(left) and right_pointer < len(right):
if left[left_pointer] < right[right_pointer]:
result.append(left[left_pointer])
left_pointer += 1
else:
result.append(right[right_pointer])
right_pointer += 1
result.extend(left[left_pointer:])
result.extend(right[right_pointer:])
return result
def main():
array = ['ade', 'htzre', 'fgrs', 'kmvirj', 'lsdnr']
print(array)
result = merge_sort(array)
print(result)
if __name__ == "__main__":
main()
end = timeit.timeit()
print (end-start)
Ich hoffe jemand kann mir dabei wenigstens einen Hinweis geben, weil ich sonst absolut nicht weiter komme. Danke im Voraus!