假设n为数组长度, 则对该数组进行选择排序的运算次数为: sum(n) = (n2 + n) / 2;
function sortmethod(arr) {
var len = arr.length, min, i, j;
// 交换两个数组项的位置
var swap = function(firstindex, secondindex) {
var temp = arr[firstindex];
arr[firstindex] = arr[secondindex];
arr[secondindex] = temp;
};
var selectionsort = function() {
for (i=0; i<len; i=i+1) {
min = i;
// 比较最小项目和第i项之后的剩余数组项, 以寻找更小项
for (j=i+1; j<len; j=j+1) {
if (arr[min] > arr[j]) { min = j; }
}
// 比较初始最小项和当前最小项, 如果不想等, 则交换两者位置
if (i !== min) { swap(i, min); }
}
// 返回经过排序的数组
return arr;
}();
}
举例说明js数组排序代码
<script language="网页特效">
var namearr = new array("d","c","b","a");
var idarr = new array("4","3","2","1");
var newarr=new array();
//排序前的数组
for(var i=0;i<namearr.length;i++){
newarr[i]=new array(namearr[i],idarr[i]);
document.write(newarr[i]+"<br>");
}
function sortfunction(x,y)
{
return x[0].charcodeat(0) - y[0].charcodeat(0);//根据二维数组的第三列的第一个字母的ascii码来降序排序
}
newarr.sort(sortfunction);
//排序后的数组
for(var i=0;i<namearr.length;i++){
document.write(newarr[i]+"打印"+"q:"+newarr[i][0]+" h:"+newarr[i][1]+"<br>");
}
function paixu(){
for(var i=0;i<newarr.length;i++){
var ooption1 = document.createelement("option");
ooption1.text=newarr[i][0];
ooption1.value=newarr[i][1];
alert("id"+ooption1.value);
innernewform.notselfunc.add(ooption1);
}
}
</script>
<form name="innernewform">
<select name="notselfunc" size="5" multiple style="width:100px">
</select><input type="button" onclick="paixu()" value="paixu">
</form>
再来看个简单的js数组排序实例
< html >
< body >
< script type ="text/javascript" >
function ascsort(x, y)
{
return x == y ? 0 : (x > y ? 1 : - 1 );
}
function descsort(x, y)
{
return x == y ? 0 : (x > y ? - 1 : 1 );
}
var y = new array(3, 1 , 2 );
y.sort(ascsort);
alert(y);
</ script >
</ body >
</ html >