A tömbök inverziója, válogatása és keverése

Egy tömb invertálása

A tömb elemeinek sorrendjének megfordításához használja a fordított eljárást. Ez a módszer megváltoztatja az elemek sorrendjét a forrás tömbben, és visszaküldi a referenciát önmagára.

Ebben az esetben a tömb kihagyása megmarad.

Elemek rendezése

A rendezési mód rendezi a tömb elemeit, megváltoztatja az elemek sorrendjét a forrás tömbben. A sorrend egy argumentumot tartalmaz egy olyan függvényre, amely összehasonlítja a tömb elemeit. Ha az összehasonlítási függvény nincs megadva, az elemek lexicográfiai sorrendbe rendezve vannak.

Még akkor is, ha sorszámot állít be, amely csak számokból áll, akkor továbbra is sztringként rendezik, nem pedig számként.

Számok sorrendjének megadásához az összehasonlítási függvényt két módszerre kell átvinni. A függvény átment a rendezési módra. váltakozva hívja fel a tömbelemek különböző párjait, és vissza kell adnia egy negatív számot, ha az első argumentum kisebb a másodiknál, pozitív szám, ha az első argumentum nagyobb a másodiknál, és 0. ha egyenlő. Így a számok sorrendjének kódja így fog kinézni.

A visszahívási funkció használatával a tömbök bármely kritérium szerint rendezhetők. Pl. Egy objektum tömböt egy tulajdonság értékével, vagy akár több tulajdonsággal is.

A visszahívási funkciónak vissza kell állítania a számot, különben az Internet Explorer hibát dob, a többi böngésző pedig egyszerűen nem rendezi a tömböt.

A tömbben szereplő mulasztásokat, valamint a tömb elemeit, amelyek megegyeznek a rendezés során megadott adatokkal, egyáltalán nem vesznek figyelembe. Ezek az elemek egyszerűen a tömb végénél végződnek.

A reverz lexikográfiai sorrendben egy tömb rendezéséhez, közvetlenül az argumentumok nélküli rendezés után hívja fel a fordított eljárást. Másfajta rendezéshez módosítania kell a visszahívási funkciót.

Elemek keverése

Azonban ez a módszer nem nevezhető hatékonynak, eltérő módon változik a különböző böngészőkben, de mindig nagyon egyenetlen. Készítsen egy tesztet: ismételten összekeverjük a tíz egymást követő számlálást 0-ról 9-re. Számoljuk ki, hogy a számok hányszor lesznek az első helyen.

A Firefoxban a teszt eredmény nagyjából 1860,1841,1223,704,633,613,409,255,1226,1236 lesz. azaz leggyakrabban a vegyes tömb nulla indexe alatt az eredeti tömb nulla indexe lesz, és legalábbis a hetedik.

IE és Safari esetében az eredmények teljesen eltérőek, de nem jobbak: 471,890,855,1362,1090,1088,844,1252,1084,1064. akkor a forrás tömb nulla indexe sokkal kevésbé valószínű, hogy a rendezett tömb nullázó indexe.

Az Operában a terjedés sokkal nagyobb, de rendezettebb: 2810,2861,1391,233,206,914,946,459,86,94. A Chrome hasonló helyzetben, de még rosszabb: 2868,2930,1962,1076,574,291,164,82,33,20.

Következtetés - az ilyen keverés alkalmazása nagyon hatékony. Sokkal jobb, ha minden elemet átmegyünk, és egy nagyobb vagy egyenlő indexű tetszőlegesre változtatjuk őket. Csak az elemek rendezéséhez a tömb vége, így a véletlen számot könnyebbé teheti.

A fenti módszerre vonatkozó korábbi teszt minden indexhez 1000 plusz-mínusz 40 ismétlést eredményez, ami kétségtelenül jobb eredmény. Ráadásul ez a módszer 40-70% -kal gyorsabb, mint az előzőben különböző böngészőkben.

Kapcsolódó cikkek