陣列的排序
1.陣列排序
arr1=[4,5,6,2,3,8,1,0,7];
function add(a,b)
document.write(arr1.sort(add));//從小到大排列。a在js中表示前乙個數,b表示後乙個數,我理解為若差值為負,則順序不變,若差值為正,則a與b交換順序
function jian(a,b)
document.write("
"+arr1.sort(jian));//從大到小排。
sort() 方法用於對陣列的元素進行排序。
語法:arrayobject.sort(sortby);引數sortby可選。規定排序順序。必須是函式。
注:如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串(如有必要),以便進行比較。
如果想按照其他標準進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的數字。比較函式應該具有兩個引數 a 和 b,其返回值如下:
若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,則返回乙個小於 0 的值。
若 a 等於 b,則返回 0。
若 a 大於 b,則返回乙個大於 0 的值。
輸出:
"0,1,2,3,4,5,6,7,8"
"8,7,6,5,4,3,2,1,0"
2.簡單排序function compare(value1,value2)
var arr = ['34', '45', '23', '56', '88', '21', '16', '55'];
alert(arr.sort(compare).tostring());
此處sort( )接受乙個compare函式作為引數,compare可以比較任意兩個實數的大小
輸出:
"16,21,23,34,45,55,56,88"
3.氣泡排序
思路:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。 至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。
var arr=[12,5,2,3,8,5,6,1,0];
var len=arr.length;
var tmp=0;
function bubblesort(arr)}}
return arr;
} document.write("
"+bubblesort(arr));//輸出結果
輸出:
"0,1,2,3,5,5,6,8,12"
快速排序之JavaScript實現
function quicksort arr 取陣列的第0個陣列作為flag var flag arr.splice 0,1 0 left為用於裝載小於flag的數字的陣列 var left right為用於裝載小於flag的數字的陣列 var right 當前陣列長度 var len arr.le...
常見排序演算法之JavaScript實現
1.為了方便說明,預設按從小到大排序 基本思路 1.依次比較相鄰的兩個數,如果第乙個比第二個小,不變。如果第乙個比第二個大,調換順序。一輪下來,最後乙個是最大的數 2.對除了最後乙個之外的數重複第一步,直到只剩乙個數 function bubblesort myarray return myarra...
排序演算法之基數排序 JavaScript實現
剛開始學,注釋為自己的理解,敬請指正。lsd radix sort 比較整型 var counter 定義乙個函式 arr待排序陣列 maxdigit陣列中最大數的位數,例如 1,10,100 的maxdigit為3 function radixsort arr,maxdigit 現在把這個 buc...