Autor Zpráva
Anonymní
Profil *
Pouzil jsem pole1.sort() a ono to usporadalo nejak nedobre. Co s tim? Podle mne je vse spravne.
www.volny.cz/peter.mlich/sorting.htm

Jedna se o radek 325:
case 99: pole1.sort();presun=true;break;
Fred
Profil
Peta vůbec nějak nechápu o co ti tam jde, ale když jsem tohle hledal použil jsem něco z odkazů na téhle stránce http://www.mickweb.com/javascript/arrays/ , tak doufám, že ti to pomůže.
Peta
Profil *
Je to test rychlosti serazovvani nekolik metod. Zjednodusena verze je tato:
(zajimalo by mne, proc se mi to chova, jako by to pretekalo pole)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<title>Trideni</title>

<style type="text/css">
#cisla1 {border:1px solid #000}
div div
{padding:0;margin:0 0 1px 0;height:1px;_height:0;font-size:2px;
width:0;background:#0000ff}
</style>


<script type="text/javascript" language="javascript"><!-- Begin
// Original: FREE 2005 Peter Mlich http://www.volny.cz/peter.mlich/

function objGet(x)
{ if (typeof x!='string') return x;
else if (Boolean(document.getElementById)) return document.getElementById(x);
else if (Boolean(document.all)) return eval('document.all.'+x);
else return null;
}
function objv(x,z) {objGet(x).value=z}
function obji(x,z) {objGet(x).innerHTML=z}
function objch(x) {return objGet(x).checked}

var pocet=1000;
var pocet1=pocet-1;
var pole1z=new Array(pocet);
var tt="";
var time=0;


function vysledek2()
{
var t1,t2,i,j;
var v="pole1z"
tt="";t1='<div style="width:';t2='px" \/><\/div>\n'
for (i=0;i<pocet;i++)
{
tt+=t1+''+eval(v+"["+i+"]")+t2;
}
}



function nahoda2() // swap rnd
{ var x,y,i,j,k,c;
for (y=0;y<pocet;y++) {pole1z[y]=y}
for (x=0;x<30;x++)
for (y=0;y<pocet;y++)
{ i=Math.floor(Math.random()*pocet)
j=Math.floor(Math.random()*pocet)
k=Math.floor(Math.random()*pocet)
c=pole1z[i]
pole1z[i]=pole1z[j]
pole1z[j]=pole1z[k]
pole1z[k]=c
}
}




function ppstart()
{
obji('cisla1',"2\/3 serazuji...")
var time1=new Date();

pole1z.sort();

var time2=new Date();
time2=time2.getTime()-time1.getTime();
objv('vspeed',time2)

obji('cisla1',"3\/3 zobrazeni (nekdy s presunem)")

vysledek2();obji('cisla2',tt)

}

function init()
{
nahoda2()
location.href="#pptop";
}


// End --></script>

</head>


<body onload="init()">


<form action="#">

<center>

<span id="pptop"></span>
<h3>Sorting (trideni JS)</h3>

<input type="button" value="Start" onclick="ppstart()" />

Speed: <input type="text" value="0" size="5" id="vspeed" /> ms

</form>

Vysledek2: (v2)
<div id="cisla1">Data2 ...</div>

</body>
</html>
Peta
Profil *
Sem to vystroural na intervalu, neni sort jako sort.

pole.sort() - kdyz se jedna o text
2,11,1,22,111 -> 1,11,111,2,22 (cili textove ok, ciselne nikoli)

pole.sort(podminka) - kdyz se jedna o cisla
2,11,1,22,111 -> 1,11,111,2,22
function podminka(a,b) {return a-b}
// kladne cislo vetsi nebo rovno, zaporne mensi, hodnotu ignoruje.

Uf, uf, to mam radost, ze mi to funguje :)

JUHU: Mohl bys to nejak pripsat na stranku k polim?
http://www.jakpsatweb.cz/javascript/pole.html
Nevim, mozna jsem tu nekde videl priklad, mozna to bylo na intervalu nebo kdesi. Take jsem to ted nasel v jedne diskusi, ale u pole bych to hledal na webce.
Leo
Profil
Ta pomocna tridici fce se musi volat pokazde, kdyz pole chcete tridit jinak nez podle anglicke abecedy / napriklad pro razeni ciselne nebo abecedni ceske. Na druhou stranu ma tu vyhodu, ze si muzete nadefinovat sve vlastni jakekoliv trideni. Podminkou je, aby tridici fce mela dva argumenty a vracela 0 pokud jsou si v poradi rovne, kladne cislo pokud je a PO b, a zaporne pokud je a PRED b. Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0