本帖最后由 charrys 于 2011-08-16 09:10:21 编辑

解决方案 »

  1.   


    <script>
    var quickSort = function(arr) {
     if (arr.length <= 1) { return arr; }
     var pivotIndex = Math.floor(arr.length / 2);
     var pivot = arr.splice(pivotIndex, 1)[0];
     var left = [];
     var right = [];
     for (var i = 0; i < arr.length; i++){
     if (arr[i] < pivot) {
    left.push(arr[i]);
     } else {
    right.push(arr[i]);
    }
    }
    return quickSort(left).concat([pivot], quickSort(right));
    };
    var sdt=[85, 24, 63, 45, 17, 31, 96, 50];
    var sdd=quickSort(sdt);
    var strio="";
    for(i=0,len=sdd.length;i<len;i++)
    strio+="|"+sdd[i];
    alert(strio);
    </script>我觉得他的运用很精辟!
      

  2.   

    汇总一下排序的方法:http://www.blueidea.com/tech/program/2004/2344.asp
      

  3.   

    算法是好算法,思路是好思路。测试了一下,10W个随机数,chrome firefox ie opera,这几个浏览器中只有chrome用这个算法提高了效率,其他三个的效率都没有浏览器自带的排序方法快。
      

  4.   

    感觉sort()是最平衡的,各浏览器的表现都很好,特别是数据大的时候,自己写的就差别很大了。function quickSort(arr, s, e) {
    if(e - s > 1) {
    var temp;
    var st = s;
    var et = e;
    temp = arr[s];
    while(st < et) {
    if(arr[et] > temp) {
    arr[st] = arr[et];
    st++;
    while(st < et) {
    if(arr[st] < temp) {
    arr[et] = arr[st];
    break;
    } else {
    st++;
    }
    }
    } else {
    et--;
    }
    }
    arr[st] = temp;
    quickSort(arr, s, st - 1);
    quickSort(arr, st + 1, e);
    }
    }