//排序算法

window.onload = function(){
    var array = [0,1,2,44,4,
                324,5,65,6,6,
                34,4,5,6,2,
                43,5,6,62,43,
                5,1,4,51,56,
                76,7,7,2,1,
                45,4,6,7,8];
    //var array = [4,2,5,1,0,3];
    array = sorting.shellSort(array);
    alert(array);
}
 
var sorting = {
    //利用sort方法进行排序
    systemSort: function(arr){
        return arr.sort(function(a,b){
            return a-b;
        });
    },
 
    //冒泡排序
    bubbleSort: function(arr){
        var len=arr.length, tmp;
        for(var i=0;i<len-1;i++){
            for(var j=0;j<len-1-i;j++){
                if(arr[j]>arr[j+1]){
                    tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        return arr;
    },
 
    //快速排序
    quickSort: function(arr){
        var low=0, high=arr.length-1;
        sort(low,high);
        function sort(low, high){
            if(low<high){
                var mid = (function(low, high){
                    var tmp = arr[low];
                    while(low<high){
                        while(low<high&&arr[high]>=tmp){
                            high--;
                        }
                        arr[low] = arr[high];
                        while(low<high&&arr[low]<=tmp){
                            low++;
                        }
                        arr[high] = arr[low];
                    }
                    arr[low] = tmp;
                    return low;
                })(low, high);
                sort(low, mid-1);
                sort(mid+1,high);
            }
        }
        return arr;
    },
 
    //插入排序
    insertSort: function(arr){
        var len = arr.length;
        for(var i=1;i<len;i++){
            var tmp = arr[i];
            for(var j=i-1;j>=0;j--){
                if(tmp<arr[j]){
                    arr[j+1] = arr[j];
                }else{
                    arr[j+1] = tmp;
                    break;
                }
            }
        }
        return arr;
    },
 
    //希尔排序
    shellSort: function(arr){
        console.log(arr);
        var h = 1;
        while(h<=arr.length/3){
            h = h*3+1;  //O(n^(3/2))by Knuth,1973
        }
        for( ;h>=1;h=Math.floor(h/3)){
            for(var k=0;k<h;k++){
                for(var i=h+k;i<arr.length;i+=h){
                    for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){
                        var tmp = arr[j];
                        arr[j] = arr[j-h];
                        arr[j-h] = tmp;
                    }
                }
            }
        }
        return arr;
    }
}

js排序的方法的更多相关文章

  1. js按照特定的中文字进行排序的方法

    之前遇到过按照中文字符排序的需求很顺利的解决了,这次是按照特定的中文字进行排序,比如按照保守型,稳健型,平衡型,成长型,进取型进行排序. 可以使用localeCompare() 方法来实现中文按照拼音 ...

  2. JS排序:localeCompare() 方法实现中文排序、sort方法实现数字英文混合排序

    定义:用本地特定的顺序来比较两个字符串. 语法:stringObject.localeCompare(target) 参数:target——要以本地特定的顺序与 stringObject 进行比较的字 ...

  3. 排序图解:js排序算法实现

    之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...

  4. JS获取长度方法总结

    目录: 1length 2size() 3length与size()的区别 4获取元素的索引 - index() 5获取对应的索引 - eq() 概述: 在工作中大家经常需要获取对象的长度,或者要获取 ...

  5. JS排序之快速排序

    JS排序之快速排序 一个数组中的数据,选择索引为(2/数组长度)的那个数据作为基数,数组中的其他数据与它对比,比它数值小的放在做数组,比它数值大的放在右数组,最后组合 左数组+基数+右数组,其中,左数 ...

  6. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  7. JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)

    1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...

  8. TODO:Node.js pm2使用方法

    TODO:Node.js pm2使用方法 pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完 ...

  9. 【转载】JS中bind方法与函数柯里化

    原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...

随机推荐

  1. Code Reading: ORB-SLAM回环检测源码阅读+注释

    之前研究过一些回环检测的内容,首先要看的自然是用词袋回环的鼻祖和正当继承人(没有冒犯VINS和LDSO的意思)ORB-SLAM.下面是我的代码注释.因为代码都是自己手打的,不是在源码上注释的,所以一些 ...

  2. 常用adb 指令

    adb指令 monkey https://www.cnblogs.com/aland-1415/p/6949964.html

  3. es6(三)

    四 . 字符串扩展:

  4. RPA与AI_新技术能给企业业务流程带来怎样的价值?

    RPA助力于流程自动化蜕变 RPA是Robotic Process Automation的缩写,意为: 将机器人作为虚拟劳动力,依照预先设定的程序与现有用户系统进行交互并完成设定好的任务流程.RPA可 ...

  5. fastJson遇到的问题

    概述 现在的代码开发中,json这种数据类型使用的是越来越多,因为它的存取速度都比较快,而且,使用起来非常的简单,今天工作的时候,我就遇到了一个关于json的生产问题,这个问题我之前确实还没有注意过, ...

  6. 团队项目需求心得——慢阻肺疾病管理APP

    一.项目介绍: 先上图: 这是我们小组开发项目的系统构成图. 本项目研发面向家庭/社区,对稳定期中慢阻肺患者病情和环境全方位监测.简单病情趋势分析和患者行为干预,并且提供患者与家庭医生和专家沟通渠道的 ...

  7. C入门注意事项

        C语言入门应该注意什么   进入IT行业,很多人一开始接触的都是C语言,C语言可以说是一门基础课程了,只要有了C语言的基础,那么以后不管是学什么语言都会比较容易上手.同时在学习其它语言时也可以 ...

  8. SSM excel文件的导入导出

    对于excel文件的导入导出,后台接收读取和建表封存都是固定死的,所以对于excel导入时,excel文件内容必须匹配后台相关对象,不然报错. excel文件导出,用<a><a/&g ...

  9. MySQL简单的查询语句

    1.查询特定列:select 列名 from 表名:(必须先进入数据库)或者 select 列名 from 数据库.表名: 2.查询多个列:select 列1,列2,... from 表名: 3.除去 ...

  10. pyCharm中BeautifulSoup应用

    BeautifulSoup 是第三方库的工具,它包含在一个名为bs4的文件包中,需要额外安装,安装方式 非常简单,进入python的安装目录,再进入scripts子目录,找到pip程序, pip in ...