var arrA = [6,2,4,3,5,1];
arrA.sort();
document.writeln(arrA);
//结果是:1,2,3,4,5,6
比如上例6个数,第一个和第二个比较后交换顺序,然后呢?一共需要比较多少次呢?
请问js的sort排序方法是怎么样的?比较次数是多少?
答案:2 悬赏:0 手机版
解决时间 2021-04-08 08:18
- 提问者网友:缘字诀
- 2021-04-07 20:58
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-04-07 21:48
这个排序这进行两两比较.
比如你这个数组按升序排列var arrA = [6,2,4,3,5,1];
第一次比较6,2
6比2大得到2,6
原数组变成[2,6,4,3,5,1]
第2次比较第2个和第3个数,6和4.
6比4大,得到4,6
结果[2,4,6,3,5,1]
第3次比较第3个和第4个数6和3.
得到[2,4,3,6,5,1]
第4次[2,4,3,5,6,1]
第5次[2,4,3,5,1,6]
第一轮完毕
第二轮
第6次,2比4小,不变[2,4,3,5,1,6]
第7次[2,3,4,5,1,6]
第8次4比5小,不变[2,3,4,5,1,6]
第9次[2,3,4,1,5,6]
第三轮
第10次 2比3小,不变[2,3,4,1,5,6]
第11次 3比4小,不变[2,3,4,1,5,6]
第12次 [2,3,1,4,5,6]
第4轮
第13次 2比3小,不变[2,3,1,4,5,6]
第14次 [2,1,3,4,5,6]
第5轮
第15次[1,2,3,4,5,5]
看出规律了么.第一轮比较数组总数-1次.以后每轮比较次数再-1
(6-1)+(6-1-1)+(6-1-1)+(6-1-1-1)+(6-1-1-1-1)+(6-1-1-1-1-1)=5+4+3+2+1
比如你这个数组按升序排列var arrA = [6,2,4,3,5,1];
第一次比较6,2
6比2大得到2,6
原数组变成[2,6,4,3,5,1]
第2次比较第2个和第3个数,6和4.
6比4大,得到4,6
结果[2,4,6,3,5,1]
第3次比较第3个和第4个数6和3.
得到[2,4,3,6,5,1]
第4次[2,4,3,5,6,1]
第5次[2,4,3,5,1,6]
第一轮完毕
第二轮
第6次,2比4小,不变[2,4,3,5,1,6]
第7次[2,3,4,5,1,6]
第8次4比5小,不变[2,3,4,5,1,6]
第9次[2,3,4,1,5,6]
第三轮
第10次 2比3小,不变[2,3,4,1,5,6]
第11次 3比4小,不变[2,3,4,1,5,6]
第12次 [2,3,1,4,5,6]
第4轮
第13次 2比3小,不变[2,3,1,4,5,6]
第14次 [2,1,3,4,5,6]
第5轮
第15次[1,2,3,4,5,5]
看出规律了么.第一轮比较数组总数-1次.以后每轮比较次数再-1
(6-1)+(6-1-1)+(6-1-1)+(6-1-1-1)+(6-1-1-1-1)+(6-1-1-1-1-1)=5+4+3+2+1
全部回答
- 1楼网友:动情书生
- 2021-04-07 22:33
第一种方法写成匿名函数
console.log(a.sort(function (a,b){return b-a}));
console.log(a.sort(function (a,b){return a-b}));
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |