Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #34275

Improve my sort!

Newsgroups comp.lang.javascript
Date 2017-11-04 05:50 -0700
Message-ID <29745427-ec33-4eea-b8ac-e72ef8b416de@googlegroups.com> (permalink)
Subject Improve my sort!
From jonas.thornvall@gmail.com

Show all headers | View raw


<HTML> 
<HEAD><TITLE>SORT</TITLE></HEAD> 
<BODY>
<TABLE BGCOLOR="WHITE" BORDER=1><TH>GENERATE RANDOM NUMBERS</TH> <TR><TD>
<FORM NAME=random onSubmit="newrandom(); return false;"> 
Smallest number <input type="text" name="startrange" value="0"><br>
Biggest number <input type="text" name="endrange" value="1000"><br>
Values to generate <input type="text" name="xvalues" value="10000000"><P>
<input type="submit" value="GENERATE"><P>
VALUES TO SORT "PRINTOUT ONLY FOR ARRAY WITH LESS THEN 100000 ELEMENTS"<BR> 
<TEXTAREA NAME=sort COLS=120 ROWS=8>
</TEXTAREA><BR> 
</FORM>
</TD></TR></TABLE>
<TABLE BGCOLOR="WHITE" BORDER=!>
<TH>COMPARE SORT TIMINGS</TH>
<TR><TD>CHOOSE SORT ALGORITHM
<select id="mySelect" onchange="chosesort();">
<option value="index">JT_INDEXSORT</option>
<option value="javascript">javascript_sort</option>
<option value="quick">QUICKSORT</option>
</select>
<FORM NAME=sort onSubmit="chosesort(); return false;"> 
<input type=submit value="SORT"> TIME MS <input type="text" name="functime" value=""><br>
SORTED VALUES PRINTOUT "ONLY IF ARRAY HAS LESS THEN 100000 ELEMENTS":<BR>
<TEXTAREA TYPE=TEXT NAME=distrib COLS=120 ROWS=23>
</TEXTAREA><BR> 
</FORM> 
</TD></TR></TABLE>
</BODY>
<SCRIPT LANGUAGE="Javascript"> 
newrandom();
chosesort();
function newrandom(){
dval=new Array();
start=document.random.startrange.value;
end=document.random.endrange.value;
start=Number(start);
end=Number(end);
numberofvalues=document.random.xvalues.value;
//Generate random values
for (var i=0;i<numberofvalues;i++){
number=Math.floor(Math.random() * end) + start; 
dval[i]=number;
}
if (dval.length<100000) {document.random.sort.value=dval;} else {document.random.sort.value=dval.length+" elements in array"};
}
function chosesort(){
selectedsort = document.getElementById("mySelect").value;
if (selectedsort=="index"){jtindexsort();}
else if (selectedsort=="javascript"){javascriptNativesort();}
else if (selectedsort=="bubble"){bubbleSort();}
else if (selectedsort=="quick"){ quickSort(dval,0,numberofvalues);}
if (dval.length<100000) {printout();} else {document.sort.distrib.value=dval.length+" sorted in array"};
}
function quickSort(arr, left, right)
{
var starttime = new Date().getTime();
var i = left;
var j = right;
var tmp;
pivotidx = (left + right) / 2; 
var pivot = parseInt(arr[pivotidx.toFixed()]); 
/* partition */
while (i <= j)
{
while (parseInt(arr[i]) < pivot)
i++;
while (parseInt(arr[j]) > pivot)
j--;
if (i <= j)
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
var endtime = new Date().getTime();
var timed = endtime - starttime;
document.sort.functime.value=timed;
return arr;
}
function javascriptNativesort(){
var starttime = new Date().getTime();
dval = dval.sort(sortNumber);
var endtime = new Date().getTime();
var timed = endtime - starttime;
document.sort.functime.value=timed;
}
function sortNumber(a, b)
{
return a - b;
}
function jtindexsort(){ 
var starttime = new Date().getTime();
countval= new Array(); 
//Initiate array range
for (j=start;j<end;j++){ 
countval[j]=0; 
} 
var temp;
//Put them on correct index
for (var i=0;i<numberofvalues;i++){ 
temp=dval[i]; 
countval[temp]=countval[temp]+1; 
} 
p=0;
offset=0; 
for (var i=start;i<end;i++){ 
dval.fill(i,offset,offset+countval[i]); 
offset=offset+countval[i]; 
}
var endtime = new Date().getTime();
var timed = endtime - starttime;
document.sort.functime.value=timed;
}
function printout(){
valdist="";
for (var j=0;j<numberofvalues;j++){
valdist+=dval[j]+",";
}
document.sort.distrib.value=valdist; 
}
</SCRIPT>
</HTML>

Back to comp.lang.javascript | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 05:50 -0700
  Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 11:54 -0700
    Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 11:57 -0700
      Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 12:40 -0700
        Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 13:20 -0700
          Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 13:59 -0700
            Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:02 -0700
            Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:05 -0700
            Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:06 -0700
        Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 13:26 -0700
          Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 14:16 -0700
            Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:23 -0700
              Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 14:40 -0700
                Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:48 -0700
                Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 14:53 -0700
                Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 15:08 -0700
                Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:51 -0700
                Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 15:11 -0700
            Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:27 -0700
              Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 14:29 -0700
    Re: Improve my sort! Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-05 20:21 +0100
      Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-05 16:14 -0800
        Re: Improve my sort! Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-06 00:23 +0000
          Re: Improve my sort! Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-11-06 02:53 +0100
  Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 12:02 -0700
    Re: Improve my sort! Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-04 20:22 +0000
      Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 13:48 -0700
        Re: Improve my sort! Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-04 22:08 +0000
          Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 15:14 -0700
            Re: Improve my sort! Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-04 23:12 +0000
              Re: Improve my sort! jonas.thornvall@gmail.com - 2017-11-04 17:14 -0700
          Re: Improve my sort! "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-11-04 15:16 -0700

csiph-web