js陣列排序 自定義快速排序

2021-09-22 16:29:49 字數 1990 閱讀 4920

var arr =[3

,4,2

,1];

arr.

sort()

; console.

log(arr)

;

預設進行遞增排序

(4) [1, 2, 3, 4]
sort方法可以接收乙個引數,用來自定義排序規則

arr.

sort

(function

(val1, val2)

);

如果陣列元素為非數字型別,必須要手動指定排序規則,否則可能會產生詭異的結果。

比如,兩個字串相減結果為nan,這回導致排序不生效。

當元素為物件時,例

var arr =[,

,]; arr.

sort

(function

(val1, val2));

console.

log(arr)

;

經查詢資料得知,sort方法竟然是用的冒泡排序。。。換乙個效率高些的吧。

array.prototype.

sortq

=function

(_compare)

;function

quicksort

(src)

function

_quicksort

(src, left, right)

j--;}

while

(i < j)

i++;}

}if(left != right)

}quicksort

(this);

}

測試一下效率
var arr1 =

newarray()

;for

(var i =

0; i <

1000000

; i++

) arr1.

push

(math.

random()

);var dat1 =

newdate()

; arr1.

sort()

;var dat2 =

newdate()

; console.

log(dat2.

gettime()

- dat1.

gettime()

);var arr2 =

newarray()

;for

(var i =

0; i <

1000000

; i++

) arr2.

push

(math.

random()

);var dat3 =

newdate()

; arr2.

sortq()

;var dat4 =

newdate()

; console.

log(dat4.

gettime()

- dat3.

gettime()

);

輸出

7237

292

效率提公升了20多倍。雖然還有更高效率的演算法,不過這個也夠用了。

2023年04月26日 補上物件陣列排序

var arr3 =

newarray()

;for

(var i =

0; i <

40; i++))

;}arr3.

sortq

(function

(val1, val2));

console.

log(arr3)

;

JS實現自定義排序

定義 用本地特定的順序來比較兩個字串。語法 stringobject.localecompare target 引數 target 要以本地特定的順序與 stringobject 進行比較的字串。返回值 說明比較結果的數字。1 如果 stringobject 小於 target,則 localeco...

JavaScript自定義陣列排序

array中有自帶的排序功能,這個使用起來比較方便,我們有一點必須清楚,就是排序的依據,如果sort不傳入引數的話,那就是按照字元編碼 unicode編碼 的順序排序。var a 3 2 1 console.log a 0 charcodeat 0 51 console.log a 1 charco...

PHP陣列 自定義排序

note 此函式將為array填充新的鍵名,將會刪除原有鍵名 function asc a,b b array 2 6 8 9 1 7 usort b,asc print r b 輸出 array 0 1 1 2 2 6 3 7 4 8 5 9 判斷條件為 return a b?1 1 陣列值按照從...