sort()函數到底是怎樣進行數字排序的


 

很多人會用sort(),並不見得知道它具體是怎樣給數字排序的。其實不知道也行,會用就可以,感興趣的可以來看看。

1  var numberArray = [2,4,1,3];
2  numberArray.sort(function(a,b){  
3     return a-b; //從小到大
4  })

用過sort()函數的都知道上面代碼其實就是將數組里的元素從小到大排序,返回結果[1,2,3,4]。

為了弄清楚sort()是怎樣進行數字比較和移動,最后排好序的,我加三行代碼,讓它把每一次比較的結果,以及a和b的值都顯示在控制台上。

 1 var numberArray = [2,4,1,3];
 2 
 3 res=numberArray.sort(function(a,b){  
 4    console.log(numberArray);
 5    console.log(a); 
 6    console.log(b);
 7    return a-b; 
 8    
 9 })
10 console.log(res);

控制台顯示內容:

紅色字體是我標記的,以便理解。

咱們看一下,一開始數組是[2,4,1,3],從小到大排序是從左邊開始兩兩比較,首先2和4比較,2<4,倆數字位置不變;繼續向右走,4和1比較,4>1,將4放在原來1的位置上;那么一開始比4小的2與1的大小關系呢,這會兒再進行比較,2>1,那就1在前,2在后;以此類推。

如果是sort()函數從大到小排序,則是從左向右兩兩進行比較,大的放在左邊。下面來看一下代碼和控制台顯示:

 1 var numberArray = [2,4,1,3];
 2 
 3 res=numberArray.sort(function(a,b){  
 4    console.log(numberArray);
 5    console.log(a); 
 6    console.log(b);
 7    return b-a; //從大到小
 8    
 9 })
10 console.log(res);

sort()函數除了可以給數字排序外,還可用於字母、字符串排序,其實質是按照字符編碼的順序進行排序。用法可參見http://www.jb51.net/article/67458.htm

以上就是sort()函數的具體比較方法,如有表述不正確之處,望大家賜教,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM