js數組內數字按大小排序實現函數


正常冒泡排序:

function evlabc(a) { //排序大小
    var i = j = t = 0;
    for (i = 0; i < a.length; i++) {
        for (j = 0; j < a.length; j++) {
            if (a[i] < a[j]) {// 相鄰元素兩兩對比
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
            console.log('i:' + i + ' j:' + j + '  當前數組為:' + a);
        }
    }
    return a;
}
var arr = [5, 100, 6, 3, -12];
evlabc(arr);

冒泡排序優化版:

function sort(arr){
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i-1;j++){
            if(arr[j]>arr[j+1]){// 相鄰元素兩兩對比
                var hand = arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=hand;
                
            }
           console.log('i:' + i + ' j:' + j + '  當前數組為:' + arr);
        }
    }
    return arr;
}
var ar = [5,100,6,3,-12];
sort(ar);

  由此可以看出,將相鄰的兩個數依次相比較,大數向后放,小數向前移。即是位置交換實現小數在前,大數在后。經過10次比較后,最終實現重排。

如果從大到小排序的話,則將if(arr[j]>arr[j+1])改為if(arr[j]<arr[j+1])即可

極簡sort版:

function sortNumber(a,b){//升序
    return a - b
}
var arr = [5, 100, 6, 3, -12];
arr.sort(sortNumber);

關於sort()函數 http://www.w3school.com.cn/jsref/jsref_sort.asp

sort函數沒有使用參數時,將按字母順序對數組中的元素進行排序。如果想按照其他標准進行排序,就需要提供比較函數,該函數要比較兩個值,然后返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:

  • 若 a 小於 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。
  • 若 a 等於 b,則返回 0。
  • 若 a 大於 b,則返回一個大於 0 的值。

 


免責聲明!

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



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