Napisz program w języku Python, który wczyta listę liczb całkowitych o nieznanej długości od użytkownika. Następnie użyj algorytmu sortowania merge sort, aby posortować te liczby w kolejności rosnącej. Program powinien wypisać posortowaną listę na ekranie. Potrzebuję na środę
pvts
def merge_sort(lista): if len(lista) <= 1: return lista
def merge(lewa, prawa): wynik = [] i = j = 0 while i < len(lewa) and j < len(prawa): if lewa[i] < prawa[j]: wynik.append(lewa[i]) i += 1 else: wynik.append(prawa[j]) j += 1
wynik += lewa[i:] wynik += prawa[j:]
return wynik
# wczytanie listy liczb od użytkownika lista = list(map(int, input("Podaj liczby oddzielone spacją: ").split()))
# wywołanie funkcji merge_sort i wypisanie wyniku na ekranie posortowana_lista = merge_sort(lista) print("Posortowana lista:", posortowana_lista)
Odpowiedź: przykładowy program w języku Python, który wczytuje listę liczb całkowitych od użytkownika, sortuje ją przy użyciu algorytmu Merge Sort i wypisuje posortowaną listę na ekranie: def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
i = j = k = 0
while i < len(left_half) and j < len(right_half):
if left_half[i] < right_half[j]:
arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1
while i < len(left_half):
arr[k] = left_half[i]
i += 1
k += 1
while j < len(right_half):
arr[k] = right_half[j]
j += 1
k += 1
def main():
arr = list(map(int, input("Podaj liste liczb calkowitych oddzielonych spacja: ").split()))
merge_sort(arr)
print("Posortowana lista: ", arr)
if __name__ == "__main__":
main()
Myślę że pomogłem
Wyjaśnienie: W tym programie funkcja merge_sort to implementacja algorytmu Merge Sort. Funkcja ta przyjmuje listę arr jako argument i sortuje ją w miejscu. Główna funkcja main pobiera listę liczb od użytkownika za pomocą input, a następnie wywołuje merge_sort na tej liście i wypisuje posortowaną listę na ekranie za pomocą print.
if len(lista) <= 1:
return lista
srodek = len(lista) // 2
lewa = lista[:srodek]
prawa = lista[srodek:]
lewa = merge_sort(lewa)
prawa = merge_sort(prawa)
return merge(lewa, prawa)
def merge(lewa, prawa):
wynik = []
i = j = 0
while i < len(lewa) and j < len(prawa):
if lewa[i] < prawa[j]:
wynik.append(lewa[i])
i += 1
else:
wynik.append(prawa[j])
j += 1
wynik += lewa[i:]
wynik += prawa[j:]
return wynik
# wczytanie listy liczb od użytkownika
lista = list(map(int, input("Podaj liczby oddzielone spacją: ").split()))
# wywołanie funkcji merge_sort i wypisanie wyniku na ekranie
posortowana_lista = merge_sort(lista)
print("Posortowana lista:", posortowana_lista)
Odpowiedź: przykładowy program w języku Python, który wczytuje listę liczb całkowitych od użytkownika, sortuje ją przy użyciu algorytmu Merge Sort i wypisuje posortowaną listę na ekranie: def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
i = j = k = 0
while i < len(left_half) and j < len(right_half):
if left_half[i] < right_half[j]:
arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1
while i < len(left_half):
arr[k] = left_half[i]
i += 1
k += 1
while j < len(right_half):
arr[k] = right_half[j]
j += 1
k += 1
def main():
arr = list(map(int, input("Podaj liste liczb calkowitych oddzielonych spacja: ").split()))
merge_sort(arr)
print("Posortowana lista: ", arr)
if __name__ == "__main__":
main()
Myślę że pomogłem
Wyjaśnienie: W tym programie funkcja merge_sort to implementacja algorytmu Merge Sort. Funkcja ta przyjmuje listę arr jako argument i sortuje ją w miejscu. Główna funkcja main pobiera listę liczb od użytkownika za pomocą input, a następnie wywołuje merge_sort na tej liście i wypisuje posortowaną listę na ekranie za pomocą print.