js中数组排序sort方法的原理分析


Posted in Javascript onNovember 20, 2014

本文实例分析了js中数组排序sort方法的原理。分享给大家供大家参考。具体分析如下:

最近在百度的项目中要用到对数组进行排序,当然一开始自然想到了数组的sort方法,这方法应用非常简单,大致如下:

window.onload=function(){

        var arr=[2,55,55,1,75,3,9,35,70,166,432,678,32,98];

        var arr2=["George","John","Thomas","James","Adrew","Martin"];

        function arrsort(a,b){

            return a-b;

            }

        console.log(arr.sort(arrsort));  //数字排序需要函数,如果要从大排到小,就return b-a;

        console.log(arr2.sort());  //字母不需要

}

但是我突然想到,sort用法为什么这么简单,其原理到底是什么呢?于是我试着不用sort对数组排序,原理是找到数组的最小值插入到新数组,然后删除数组中的这个最小值,更新数组后继续寻找最小值插入,如此循环,代码如下:
window.onload=function(){

        var arr=[2,55,55,1,75,3,9,35,70,166,432,678,32,98];

        var len=arr.length;

        console.log(arr.join(","));

        var newarr=[];

        for(var i=0;i<len;i++){

            newarr.push(Math.min.apply(null,arr));  //把最小值插入新数组

            arr.splice(r(arr,Math.min.apply(null,arr)),1);  //插入后,立马删除最小值

        }

        //找到最小值在数组中的位置

        function r(s,v){

            for(k in s){

                if(s[k] == v){

                    return k;

                    }

                }

            }

        console.log(newarr.join(","))

}

PS:这只是我写的一个方法,sort的原理应该不是这样的,还可以用冒泡法对数组排序,代码我就不写了,网上一大堆.当然上面的代码只是对数字数组进行了排序,对于字符串的排序,可以考虑字符串的localeCompare方法.

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Add a Formatted Table to a Word Document
Jun 15 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
Feb 03 Javascript
用js判断页面是否加载完成实现代码
Dec 11 Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
May 26 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
Aug 06 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
JavaScript判断对象和数组的两种方法
May 31 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
JavaScript实现图片放大镜效果
Jun 27 Javascript
vue中destroyed方法的使用说明
Jul 21 Javascript
javascript继承机制实例详解
Nov 20 #Javascript
jQuery验证插件 Validate详解
Nov 20 #Javascript
PHP中使用微秒计算脚本执行时间例子
Nov 19 #Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 #Javascript
实现图片预加载的三大方法及优缺点分析
Nov 19 #Javascript
jQuery Ajax()方法使用指南
Nov 19 #Javascript
javascript匿名函数实例分析
Nov 18 #Javascript
You might like
AM/FM收音机的安装与调试
2021/03/02 无线电
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
详解参数传递四种形式
2015/07/21 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
js 获取经纬度的实现方法
2016/06/20 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
koa socket即时通讯的示例代码
2018/09/07 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
python热力图实现简单方法
2021/01/29 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
幼儿园社区活动总结
2014/07/07 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS