Witam, przychodzę do Was z prośba o pomoc w napisaniu tego programu. Poklikalbym cos samemu, niestety zepsuł mi się komputer a na telefonie byłoby to bardzo uciążliwe. Dziekuje za pomoc
- Screenshot_2019-03-23-20-17-56~3.png (87 KB) - ściągnięć: 290
Witam, przychodzę do Was z prośba o pomoc w napisaniu tego programu. Poklikalbym cos samemu, niestety zepsuł mi się komputer a na telefonie byłoby to bardzo uciążliwe. Dziekuje za pomoc
Spoko napisz kod na kartce zrob zdjecie i wklej na forum to moze ktos Cie poratuje.
Spróbuj na kompie, jak ci nie będzie działać to daj go w znaczniku dostępnym pod guzikiem z </>. Ktoś ci na pewno napisze gdzie są błędy. Obecnie wygląda to raczej tak jakbyś chciał żeby ktoś zrobił za ciebie zadanie domowe, a takim za darmo nie pomagamy (a jak nie za darmo to pisz w dziale ogłoszenia drobne)
To nie te czasy, że bez komputera nic nie zrobisz. Dla takiego prostego programu możesz odpalić jakiś kompilator online na komórce, np.:
https://repl.it/languages/python3
A = [2, 3, 4, 5, 7, 9]
B = [1, 3, 3, 6, 9]
C = [1, 3, 3, 6, 99]
def merge(list_a, list_b):
max_iterator = get_max_iterator(len(list_a), len(list_b))
merged_lists = get_merged_lists(list_a, list_b, max_iterator)
bubble_sort(merged_lists)
return merged_lists
def get_max_iterator(length_a, length_b):
if length_a > length_b:
return length_a
else:
return length_b
def get_merged_lists(list_a, list_b, max_iterator):
i = 0
merged_lists = [] * len(list_a * len(list_b))
while i < max_iterator:
if is_iterator_in_list_index_range(i, len(list_a)):
merged_lists.append(list_a[i])
if is_iterator_in_list_index_range(i, len(list_b)):
merged_lists.append(list_b[i])
i = i + 1
return merged_lists
def is_iterator_in_list_index_range(iterator, index_range):
if iterator >= index_range:
return False
else:
return True
def bubble_sort(sortable_list):
for pass_num in range(len(sortable_list)-1, 0, -1):
for i in range(pass_num):
if sortable_list[i] > sortable_list[i+1]:
temp = sortable_list[i]
sortable_list[i] = sortable_list[i+1]
sortable_list[i+1] = temp
print(merge(A, B))
print(merge(B, A))
print(merge(A, C))
Pewnie mozna 3 razy krócej, prawda? Ale tak jak mówiłem, nie umiem tego jezyka
??? przecież te listy już są posortowane.
A = [2, 3, 4, 5, 7, 9]
B = [1, 3, 3, 6, 9]
C = [1, 3, 3, 6, 99]
def merge(a, b):
wynik = []
while len(a) > 0 and len(b) > 0:
if a[0] <= b[0]:
wynik.append(a[0])
a = a[1::]
else:
wynik.append(b[0])
b = b[1::]
if len(a) > 0:
for x in a:
wynik.append(x)
if len(b) > 0:
for x in b:
wynik.append(x)
return wynik
print(merge(A, B))
print(merge(B, A))
print(merge(A, C))
while
tworzysz nową listę. Z funkcji O(a+b) zrobiłeś O(MG).a == b and len(a) == 10_000
, rozwiązanie oparte oremove
byłoby (zgaduję) 15x szybsze od aktualnego. (Przed wejściem w pętlę należałoby utworzyć kopie obu list.) Co nie zmienia faktu, żeremove
jest O(N) time. Pozostają: indeksowanie oraz iteratory.