JavaScript學習之排序

2021-08-02 16:00:55 字數 1738 閱讀 7038

陣列的排序

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...