Válogatás és keverés java, blog csak a java

Érdekelheti, hogy a sort () metódus rendezi a listát. Általában, ha az algoritmusok algoritmusait a könyvben való rendezés algoritmusairól tekintjük meg, akkor a tömböket az elemekhez való véletlenszerű hozzáférés használatával reprezentáljuk. A listaelemekhez való véletlen hozzáférés azonban hatástalan.

A listákat hatékonyan rendezheti az egyesítés rendezési formájával. A Java nyelven történő megvalósítás azonban ezt nem teszi meg. Egyszerűen visszaállítja az összes elemet egy tömbre, sorba rendezi ezt a tömböt, másikfajta egyesítést alkalmaz, majd a rendezett sorozatot a listára másolja.

A gyűjteménytárban használt összefésülési algoritmus kissé lassabb, mint a gyors rendezés, a hagyományos választás az általános rendezési algoritmusok számára. Ennek ellenére van egy fontos előnye: stabil, vagyis nem változtatja meg az egyenértékű elemeket helyeken.

Miért zavarja az egyenértékű elemek sorrendjét? Tekintsünk egy közös forgatókönyvet. Tegyük fel, hogy van egy listája azon alkalmazottak listájáról, amelyeket már rendezett név szerint. Most fizetéssel rendezed. Mi történik az ugyanazon fizetéssel rendelkező munkavállalókkal? Stabil válogatással a név szerinti sorrend megmarad. Más szavakkal az eredmény egy lista, amelyet először fizetés alapján rendeznek, majd név szerint.

Mivel a gyűjtemények nem feltétlenül hajtanak végre minden "nem kötelező" módszert, minden olyan módszer, amely elfogadja a gyűjtési paramétereket, meg kell határoznia, mikor kell a gyűjteményt biztonságosan átvinni az algoritmusra. Például nyilvánvaló, hogy nem kívánja áthelyezni a listát, amely nem módosíthatóList a rendezési algoritmusra. Milyen listákat tudsz átvinni? A dokumentáció szerint a listát módosítani kell, de nem változtatható meg.

A kifejezések a következők:

  • A lista módosítható, ha támogatja a set () metódust.
  • A lista mérete változó, ha támogatja az add () és remove () metódusokat.

A gyűjtemények osztályában van egy shuffle algoritmus. amely a rendezési feladatot ellentétes módon végzi el: véletlenszerűen megváltoztatja a listában lévő elemek sorrendjét.

Gyűjtemények. shuffle (kártyák);

Ha olyan listát alkalmaz, amely nem hajtja végre a RandomAccess interfészt. akkor a véletlenszerű módszernél az összes elemet egy tömbre másoljuk, keverjük össze ezt a tömböt, majd másoljuk át a csoszogott elemeket a listára.

Az alább látható program kitölti a lista tömböt 49 egész objektummal. 1-től 49-ig terjedő számokat. Ezután véletlenül megkeveri őket a listában, és kiválasztja az első 6 értéket a kevert listából. Végül a kiválasztott értékeket rendezi és kinyomtatja.

Itt van az aktuális program, amely bemutatja a véletlenszerű keverés és rendezés algoritmusait: