Házi feladat

Keveré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. Rendezd ezeket a számokat növekvő sorrendbe! Írd ki a számok rendezett sorozatát is! A feladat az lenne, hogy a rendezett számok sorozatát a Fisher-Yates-Knuth keverési algoritmus segítségével újra összekeverd! (Tehát nem az eredeti, kevert számsorozatot kellene újra kiírni!)

Fisher-Yates-Knuth algoritmus lényege röviden összefoglalva: Ez lényegében a minimumkiválasztásos rendezés úgy módosítva, hogy nem a legkisebb, hanem egy tetszőleges elemet választunk. Kiválasztunk egy tetszőleges elemet, amit kicserélünk a lista első elemével. Ezt követően kiválasztunk egy tetszőleges elemet, amelyet kicserélünk a lista második elemével, és így tovább, mígnem már csak egyetlen elem marad a lista végén.

Felhívjuk a figyelmet arra, hogy sokféleképpen lehet rendetlenséget csinálni egy listában, de a fenti algoritmus többet tud ennél: Minden elem azonos valószínűséggel kerülhet a végeredménylista bármely pontjára! Így ha csak mást nem igényel egy feladat, mindig ezt az algoritmust használjuk elemek keverésére!

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 részfeladatokat érdemes külön függvényekben kidolgozni.

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ó.

A rendezésed legyen képes tetszőleges típussal is dolgozni, ne csak számokkal (noha a tesztelés során csak számokkal dolgozunk).