zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/lunalord/p/1970108.html
Copyright © 2011-2022 走看看