關(guān)于數(shù)組排序sort()
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));
如上代碼,是基于什么原理將數(shù)組排序的呢?
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));
如上代碼,是基于什么原理將數(shù)組排序的呢?
2018-05-24
舉報
2018-12-13
理解:
document.write(myarr.sort(sortNum))此行的意思是myarr.sort()按照sortNum兩兩比較進行排序。
因為?arrayObject.sort(方法函數(shù)) 按照按unicode碼順序排列,而unicode碼下 a > b ,
疑問:
?那么return a-b; 結(jié)果為真還是為假,??函數(shù)?sortNum?返回值是a還是b?
2018-07-28
因為本身a>b。不信你把a,b換成e,f或者m,o,會是一樣的
2018-06-15
可以這樣來理解,不一定科學正常,但是有助于理解。
JS自動排序,結(jié)果一下子就出來了,為了方便理解,我們可以把這個JS運算過程放慢一些,過程分解成很多小的步驟。
就以此問題中的數(shù)字排序為例。
要將這代碼中的數(shù)字排序,就要用到排序函數(shù),而排序函數(shù)只對2個字進行比較。為了達成排序目的,程序就自動地把數(shù)組里的所有2個字都進行了【a-b】的操作。
首先,把第1位數(shù)“80”當作a,把其它數(shù)字當作b,此時,要完成的操作有80-16,80-5,80-6,80-100,80-1。經(jīng)過這一輪排序后,初步排序結(jié)果基本上是16,50,6,1,80,100。因為還有數(shù)沒有進行兩兩相減進行比較,所以還要繼續(xù)進行下面的操作。
現(xiàn)在,把第2位數(shù)“16”當作a,把其它數(shù)當作b, 此時,要完成的操作有16-50,16-6,16-100,16-1。這次的排序結(jié)果,在上一輪結(jié)果上再進行比較排序,改正其中幾個不對的?,F(xiàn)在的排序結(jié)果初步是6,1,16,50,80,100。
同理,接下來,其它所有的數(shù)繼續(xù)進行【a-b】的操作,直到所有的數(shù)都進行了兩兩比較。最后,排序結(jié)果也一步步修正得到了最終的結(jié)果。
2018-06-14
他是怎么把參數(shù)傳到這個sortNum()函數(shù)里面的那?
2018-05-24
通過兩數(shù)相減是大于0還是小于0判斷兩數(shù)大小從而排序