码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 排序算法

时间:2017-04-18 16:03:59      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:冒泡排序   log   表情   apple   java   class   images   array   logs   

排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素xy,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。

JavaScript的Arraysort()方法就是用于排序的,但是排序结果可能让你大吃一惊:

// 看上去正常的结果:
[‘Google‘, ‘Apple‘, ‘Microsoft‘].sort(); // [‘Apple‘, ‘Google‘, ‘Microsoft‘];

// apple排在了最后:
[‘Google‘, ‘apple‘, ‘Microsoft‘].sort(); // [‘Google‘, ‘Microsoft", ‘apple‘]

// 无法理解的结果:
[10, 20, 1, 2].sort(); // [1, 10, 2, 20]

  

技术分享(这表情太喜感,忍不住加上)

原来Array的sort()方法默认把所有元素转换成String 再排序

因为sort也是一个高阶函数,我们可以自定义它的规则,

实现数字大小排序

var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
    if (x < y) {
        return -1;
    }
    if (x > y) {
        return 1;
    }
    return 0;
}); // [1, 2, 10, 20]

  

如果要实现的是反序,返回值改改就行.

来自文章笔录:

http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014351226817991a9c08f1ec0a45c99b9209bcfc71b8f6000

 

JavaScript 排序算法

标签:冒泡排序   log   表情   apple   java   class   images   array   logs   

原文地址:http://www.cnblogs.com/chenjf/p/6727871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!