Házi feladat

Beszúró rendezés

Általános leírás

Írj egy programot, ami bekér egy N, INF, SUP számot. Generálj le egy N elemű listát, amiben INF és SUP közötti véletlenszerű számok szerepelnek. A program ezt követően írja ki a képernyőre az így generált számok listáját. Ezután írja ki sorbarendezve a számsorozatot.

A sorbarendezés során a Beszúró rendezés algoritmusát használd! Ennek a lényege röviden összefoglalva: A listát kettévágjuk képzeletben egy 1 és egy N-1 elemű részre. Az első elem által alkotott rész alkotja a "rendezett listarészt", az összes többi elem által alkotott rész nem más, mint a beszúrásra váró elemek. Minden lépésben beszúrunk egy elemet a helyére, és így eggyel nő a rendezett rész és egy elemmel csökken a rendezetlen rész. Addig zajlik a rendezés, amíg a rendezetlen rész el nem fogy.

Tehát a k-adik lépésben a k-adik (vagy k-1-edik?) elemnek megkeressük a helyét tőle balra. Azaz addig nézzük a számokat tőle balra, míg egy olyat nem találunk, ami már a k-adik (vagy k-1-edik?) elemnél kisebb. Ha ilyet találtunk, akkor ez kell legyen a helye, hiszen ez az a pont, ahol a rendezettség miatt tőle balra kisebb, tőle jobbra nagyobb elemek lennének. Tehát ide beszúrjuk az elemet, azaz ezután elhelyezzük és minden mást jobbra tolunk. (Vagy azt is lehet, hogy addig-addig cserélgetjük balra, míg nála kisebbet nem találunk, mert ilyenkor pont a helyére kerül.)

A megoldásod során érdemes függvényt használni (mert ez a feladat papíros dolgozatban is számon lesz kérve, és úgy könnyebb megjegyezni): a lista "rendezett részében" zajló helykeresést (vagy addig cserélgetést) érdemes külön függvényben megcsinálni, mert akkor nagyon áttekinthetővé válik a kód.

A programod kommunikáljon a felhasználóval! Minden bemenetet "kérjen be", és minden kimenetnél írja ki, hogy mit fog kapni a felhasználó.