這段代碼中,return a-b;是如何實現(xiàn)對數(shù)值大小進行排序的?謝謝
<script type="text/javascript">
?function sortNum(a,b) {
?return a - b;
//升序,如降序,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
?document.write(myarr + "<br>");
?document.write(myarr.sort(sortNum));
</script>
2016-06-18
我來最后補充回答一下,首先要明白兩點:
1、關(guān)于sort(sortby)中的sort排序機制,也就是關(guān)于sortby函數(shù)作為sort()參數(shù)來指導(dǎo)sort()的排序方式,詳情見?JavaScript sort() 方法?這是w3c的介紹,理解這個的重點就是這幾句話:
換句話說就是:1.返回值小于0,a,b在數(shù)組中順序不變
???????????????????? ? ?2.返回值小于0,a,b在數(shù)組中順序不變,(變不變有什么區(qū)別呢 - -?。?/p>
???????????????????? ? ?3.返回值大于0,a,b在數(shù)組中順序交換
????????
*請注意上面幾行是排序的規(guī)定,就像1+1=2一樣,是?javascript約定俗成的規(guī)定?。。。?!
2、排序方法sort()中的執(zhí)行過程(算法問題)不必深究,我的理解是以循環(huán)比較的方式排列出來了,你只要明白計算機使出渾身解數(shù)以你制定的規(guī)則(sortby)循環(huán)比較,把你想要的排列展現(xiàn)出來了。
--------------------------------------分割線------------分割線------------------------------------------------------
eg:那么在這段代碼中 我來以 return a-b 為什么是升序為例來解釋一下
<script type="text/javascript">
?function sortNum(a,b)?{
?return a - b;
var arr = [1,11,3,4,5];
alert(arr.sort(sortNum)); ? ? //[1,3,4,5,11]
</script>
當開始排序的時候,
首先把a=1和b=11作為參數(shù)傳到sortNum(a,b)中,由于1-11<0,按照規(guī)定中的第1條,1,11在數(shù)組中順序不變;
……此處省略中間相似循環(huán)比較……
在排序到了數(shù)值11的時候,舉例11和3比較,把a=11和b=3作為參數(shù)傳數(shù)sortNum(a,b)中,由于11-3>0,按照規(guī)定中的第3條,排序后,11和3交換位置。
這樣在經(jīng)歷了不知道多少次的循環(huán)比較之后,數(shù)組的輸出就變成了[1,3,4,5,11],也就是我們理解的升序排列,同理可以理解b-a了吧~~~
2016-01-28
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
2015-12-11
function sortNum() 返回的是?a減b的值
myarr.sort(sortNum)相當于myarr.sort(a-b)
a-b<=-1,則表示 A 在排序后的序列中出現(xiàn)在 B 之前。
a-b>-1 && <1,則表示 A 和 B 具有相同的排序順序。
a-b>=1,則表示 A 在排序后的序列中出現(xiàn)在 B 之后
2015-12-11
試試這個Arrays.sort();
2015-12-11
具體怎么排序需要看看js引擎使用那種算法了(可以看瀏覽器源碼或查相關(guān)的資料,反正我是不知道)。。
你傳入的這個函數(shù)只是告訴引擎規(guī)則,是升序?還是降序?
2015-12-11