Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Python: Shell-lajittelu

koodaaja [29.03.2021 00:12:23]

#

Tässä on esimerkki Shell-lajittelusta. Shell-lajittelussa verrataan kaksi lukua tietyn etaisyyden päästä. Etäisyys on aluksi puolet taulukon pituudesta ja puolittuu joka kerta. Keskityn jatkossa lajittelu -ja hakualgoritmeihin ja tietorakenteisiin.

#Tehdään shell-lajittelu
#Luodaan taulukko.
luvut = [22,24,14,15,44,40,28,30,15,4,12,5]
#Otetaan alku askeleeksi puolet taulukon pituudesta.
#Askel puolitetaan joka kierroksella
askel = int(len(luvut)/2)

while (askel > 0):
 i = askel
 #Järjestetään luvut askeleen mukaan.
 while (i < len(luvut)):

  while (luvut[i-askel] > luvut[i]):
   #Vaihdetaan järjestystä
   #Käytetään temp-muuttujaa apumuuttujana
   temp = luvut[i]
   luvut[i] = luvut[i-askel]
   luvut[i-askel] = temp
   if (i-askel >= askel):
    i -= askel
  i += 1
 #Puolitetaan askel seuraavaa kierrosta varten.
 askel = int(askel/2)


print(luvut)

Lisäys 3.4. 11.16
Tässä kuussa teen keko -ja kantalukulajittelun.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta