理解sort 函式的排序原理

2022-02-21 09:31:34 字數 1326 閱讀 1584

看了很多關於sort()函式的定義和解釋還是不太清楚,尤其是初學者很容易看懵,這裡講講自己是如何理解的。 

首先,要理解sort()內部是利用遞迴進行氣泡排序的;

例如:

var arr = [1, 5, 4, 2];

sort()方法的比較邏輯為:

第一輪:1和5比,1和4比,1和2比

第二輪:5和4比,5和2比

第三輪:4和2比

其次,sort()方法會接受乙個比較函式compare(a, b),該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的數字。

最後,永遠要記住一句話,凡是返回1或者大於0的正數的時候就要交換位置。(內部實現)

例如:

var arr = [1, 5, 4, 2];

現在要進行公升序排列,從左到右的陣列項關係最終應該為: a < b < c < d

所以只要在當a大於b的時候去交換它們的位置就好了:

if(a >b )

簡化後:

//

公升序return a -b;

//倒序

return b - a;

原文:看了很多關於sort()函式的定義和解釋還是不太清楚,尤其是初學者很容易看懵,這裡講講自己是如何理解的。 

首先,要理解sort()內部是利用遞迴進行氣泡排序的;

例如:

var arr = [1, 5, 4, 2];

sort()方法的比較邏輯為:

第一輪:1和5比,1和4比,1和2比

第二輪:5和4比,5和2比

第三輪:4和2比

其次,sort()方法會接受乙個比較函式compare(a, b),該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的數字。

最後,永遠要記住一句話,凡是返回1或者大於0的正數的時候就要交換位置。(內部實現)

例如:

var arr = [1, 5, 4, 2];

現在要進行公升序排列,從左到右的陣列項關係最終應該為: a < b < c < d

所以只要在當a大於b的時候去交換它們的位置就好了:

if(a >b )

簡化後:

//

公升序return a -b;

//倒序

return b - a;

sort函式的排序原理

sort函式的排序原理 sort 方法的比較邏輯為 第一輪 1和5比,1和4比,1和2比 第二輪 5和4比,5和2比 第三輪 4和2比 sort函式,對給定區間所有元素進行排序,預設為公升序,也可進行降序排序。sort函式進行排序的時間複雜度為n log2n 注意 不是快排 qsort 是快排 比冒...

理解js陣列的sort函式排序

每次用js的sort函式排序都容易犯錯誤,當時搞懂了一段時間就又忘了。現在來把它摟一摟。sort函式的用法 arr 3,2,1 arr.sort a,b 其實這個函式確實設計得有點奇怪,他讓你傳入乙個自己的函式來確實排序演算法,所以關鍵是自己怎麼來寫這個比較函式,關於這個返回值 我很容易就想到 tr...

C 中sort排序函式的原理用法

sort函式可以用來給指定區間內的資料按照某種規則排序,在這裡貼一下sort函式的 templateinline void sort ranit first,ranit last,pr pred 能夠看出該函式是經過多層呼叫的,再深層次就不貼了大家可以開啟 庫看。使用時預設情況下是兩個引數,例如 v...