• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie bąbelkowe wyrazów z tablicy.

Cloud VPS
0 głosów
852 wizyt
pytanie zadane 23 lutego 2019 w Python przez bednar98 Początkujący (440 p.)

Mam problem z tam zadaniem, podpunkt a mam zrobiony ale potrafię do końca zrobić podpunktu b. Zacząłem to robić sortowaniem bąbelkowym i sortowanie miało to na celu porównywanie liter w dwóch wyrazach poprzez odwołanie się do ascii dla dużych liter.

['akwarium', 'zamek', 'kret', 'czeladnik', 'substytut', 'butonierka', 'malarz', 'Mimoza', 'metamoRfoza', 'Kronika', 'miozyna', 'figlarna'];
['holewka', 'alabaster', 'dramat', 'grupa', 'nierealny', 'nacja', 'ewolucja', 'orangutan' ,'Drobiazg', 'prawomocny']
a. połącz obie listy w jedną listę oraz spraw aby wszystkie wyrazy były pisane wielkimi lub małymi literami.
b. posortuj nowo utworzoną listę w kolejności alfabetycznej. Uwaga: nie wolno używać wbudowanej funkcji sorted(), LIST.sort() czy innej podobnej. Funkcja sortująca musi być zaimplementowana.

Kod:

q=['akwarium', 'zamek', 'kret', 'czeladnik', 'substytut', 'butonierka', 'malarz', 'Mimoza', 'metamoRfoza', 'Kronika', 'miozyna', 'figlarna']
w=['holewka', 'alabaster', 'dramat', 'grupa', 'nierealny', 'nacja', 'ewolucja', 'orangutan' ,'Drobiazg', 'prawomocny']

q.extend(w)
lista=[]

for i in range(0,len(q)):
    lista.append(q[i].upper())
print(q,"\n",lista)
print(len(lista)-1)

j,lenght=0,0

for x in range(0,len(lista)-1):
    print(lista[x],lista[x+1])
    if len(lista[x])>=len(lista[x+1]):
        length=len(lista[x+1])-1
        for j in range(0,lenght):
            if ord(lista[x][j])>ord(lista[x+1][j]):
                print(lista[x][j])
                temp=lista[x]
                lista[x]=lista[x+1]
                lista[x+1]=temp
    else:
        length=len(lista[x])-1
        for j in range(0,lenght):
            if ord(lista[x][j])>ord(lista[x+1][j]):
                print(lista[x][j])
                temp=lista[x]
                lista[x]=lista[x+1]
                lista[x+1]=temp
print(lista)

 

komentarz 23 lutego 2019 przez adrian17 Mentor (354,120 p.)

Dobra, zacznijmy od podstaw... stringi można porównywać przez >, <. Nie musisz ręcznie iterować po znakach i porównywać przez ord() etc. Nic w treści zadania nie zakazuje:

if words[x] > words[x+1]:

Więc proponuję żebyś z tą wiedzą napisał to od nowa :)

komentarz 3 marca 2019 przez bednar98 Początkujący (440 p.)
Dzięki bardzo!!!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 228 wizyt
pytanie zadane 28 listopada 2024 w C i C++ przez adam234345 Początkujący (400 p.)
0 głosów
1 odpowiedź 330 wizyt
pytanie zadane 8 stycznia 2023 w C i C++ przez Zuzan Początkujący (390 p.)
0 głosów
1 odpowiedź 821 wizyt
pytanie zadane 24 października 2021 w C i C++ przez pita Nowicjusz (180 p.)

93,453 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,830 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...