作者TonyQ (^^)
看板Ajax
标题Re: [问题] JavaScript中,Array Method中的sort()
时间Wed Nov 11 18:49:43 2009
※ 引述《luckymoon (青谷)》之铭言:
: 小弟想请问一下Array的sort()这个Method。
: sort()是用来做阵列中元素的排序,那麽小弟看到书中解释,如果
: 要做字母排列以外的方式排序,就必须传递一个"比较函式"给它做
: 为参数。
: var a = [33, 4, 1111, 222];
: a.sort(function(a,b){
: return a - b;
: });
: 书中写,用这样的就可以以数字大小顺序做排列,那麽,我想知道
: 的是,sort()里面的函数是怎麽运作的。
原则上任何比较式的排序都有可能
(selection/insertion/bubble/quick....etc)
何不自己实验看看?
var a = [5, 4, 3,2,1];
a.sort(function(a1,b1){
alert(a1+":"+b1);
return a1 - b1;
});
我自己fx跑出来的结果
猜想状况,不知道是不是真的...
5:4 [ 4,5,3,2,1 ]
5:3 [ 4,3,5,2,1 ]
4:3 [ 3,4,5,2,1 ]
5:2 [ 3,4,2,5,1 ]
4:2 [ 3,2,4,5,1 ]
3:2 [ 2,3,4,5,1 ]
5:1 [ 1,2,3,4,5 ]
2:1
假设是我模拟的这样 , 那应该算是 insertion sort 吧..
不过只是假设就是了...
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 116.59.3.119
1F:推 luckymoon:的确要有实验的精神,我自己试了一下,ie跟其他浏览器跑 11/11 19:44
2F:→ luckymoon:的'过程'不一样,结果相同,ie多跑了好几次,想不到这种 11/11 19:45
3F:→ luckymoon:内建函式也会因为浏览器的不同,效率也不一样 11/11 19:45
4F:→ ybite:八卦:Firefox 是用 Merge Sort 11/11 20:30
5F:→ ybite:(Bug 224128) 11/11 20:31
6F:推 SansWord:这个过程感觉不是Insertion Sort? 要怎麽观察中间状态? 11/12 16:13