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>
  • 相关阅读:
    SpringBoot集成springfox-swagger2访问swagger-ui.html页面弹窗提示问题
    Java数据结构与算法之队列(Queue)实现
    华为S9300交换机热补丁安装
    ubnt EdgeSwitch 24-Port 250W DHCP_CLI[osapiTimer]: dhcp_prot.c(812) 1285780 %% Failed to acquire an IP address on Network Port; DHCP Server did not respond.
    windows server 2012 r2查看远程用户登录IP
    iptables && firewall 的简单应用
    deepin如何自定义启动器图标,如firefox
    deepin如何访问samba共享文件夹
    vsftpd服务搭建
    华为服务器RH 2288H v2 or v3安装系统
  • 原文地址:https://www.cnblogs.com/lunalord/p/1970108.html
Copyright © 2011-2022 走看看