mage 排序。 c99 wiki 理解 == soft png
排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素
和
- x
,如果认为
- y
,则返回
- x < y
,如果认为
- -1
,则返回
- x == y
,如果认为
- 0
,则返回
- x > y
,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
- 1
JavaScript 的
的
- Array
方法就是用于排序的,但是排序结果可能让你大吃一惊:
- sort()
- // 看上去正常的结果:
- ['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 排序算法
来源: http://www.bubuko.com/infodetail-2030910.html