• javascript排序算法


    这个。。。搞了好几天。唉,没学过数据结构的人飘过。写了几个算法,等有时间,把那书好好看了,写个完整点的

    View Code
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>

    <script type="text/javascript">

    var sort = function(arr){
    this.arr = arr
    }
    sort.prototype
    = {
    constructor: sort,

    swap:
    function(r1, r2, arr){
    var arr=arr||this.arr,temp=arr[r1];
    arr[r1]
    =arr[r2];
    arr[r2]
    =temp;
    },

    systemSort:
    function(arr){
    var arr=arr||this.arr;
    return arr.sort(function(a,b){return a-b;});
    },

    bubbleSort:
    function(r1, r2, arr){
    var arr = arr || this.arr;
    for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr.length - i - 1; j++) {
    arr[j]
    > arr[j + 1] ? (j, j + 1) : void (0);//小的放上面,
    }
    }
    return arr;
    },

    quickSort:
    function(o){
    var o = o ||{};
    var arr = o.arr || this.arr, swap = this.swap;
    var qs1 = function(arr){
    if (arr.length > 1) {
    var key = arr[0], arr1 = [], arr2 = [];
    for (var i = 1; i < arr.length; i++)
    arr[i]
    <= key ? arr1.push(arr[i]) : arr2.push(arr[i])
    arr1
    = qs1(arr1);
    arr2
    = qs1(arr2);
    return arr1.concat(key, arr2)
    }
    else {
    return arr;
    }
    }
    return qs1(arr)
    },

    selectionSort:
    function(arr){
    var arr = arr || this.arr, temp, min;
    for (var i = 0; i < arr.length - 1; i++) {
    for (var min = i, j = i + 1; j < arr.length; j++)
    min
    = arr[min] > arr[j] ? j : min
    if (i != min)
    this.swap(i, min)
    }
    return arr;
    },

    //插入排序
    insertionSort: function(arr){
    var arr=arr||this.arr,arr2=[],swap=this.swap;
    //直接插入排序,教科书方式
    var straight2=function(){
    for(var i=1;i<arr.length;i++){
    var temp=arr[i]
    for (var j =i-1;j>=0;j--) {
    if(temp<arr[j]) {
    arr[j
    +1]=arr[j];
    console.info(
    "if--------",i,j,arr)
    }
    else break;
    }
    arr[j
    +1]=temp;
    }
    return arr;
    }
    return straight2()
    }

    }


    var a=[];
    for(var num=0;num<20;num++)
    a[num]
    =parseInt(Math.random()*100)

    var b = new sort(a);
    for(var i in b){
    if(i!="arr"&&i!="constructor"&&i!="swap"){
    var c = new sort(a);
    document.write(i
    +"---"+c[i]()+"<br/>")
    }

    }



    </script>

    </body>
    </html>
  • 相关阅读:
    C++类中的函数重载
    C++中的友元
    bzoj 2820
    莫比乌斯函数
    bzoj 2440: [中山市选2011]完全平方数
    莫比乌斯反演1
    [转]C++ 指针和引用
    P2756 飞行员配对方案问题
    P2055 [ZJOI2009]假期的宿舍
    P2654 原核生物培养
  • 原文地址:https://www.cnblogs.com/lunalord/p/1970108.html
Copyright © 2020-2023  润新知