js實現快速排序的方法

2021-10-19 22:06:20 字數 1533 閱讀 5373

第一種是通過兩個for迴圈,每一次對比相鄰兩個資料的大小,小的排在前面,如果前面的資料比後面的大就交換這兩個數的位置,這個方法就是比較次數太多了,效率比價低。

我只是傳入了乙個10位數的陣列,如果是上萬或者更大的資料,不知道您的電腦會不會藍屏了,嘿嘿,你可以試試哦!

varsort=function(arr)

}

}

returnarr;

}

或者var sort = function(arr)

} return arr

}sort([10,10,1,2,4,6,7,89,7,4])

輸出結果

下面我們來說說第二種方法,這方法是我瀏覽阮一峰老師日誌看到的,這種方法的效率會高很多,具體選哪種,看情況吧!

varquicksort =function(arr)

varpivotindex = math.floor(arr.length / 2);//取基準點

varpivot = arr.splice(pivotindex, 1)[0];//取基準點的值,splice(index,1)函式可以返回陣列中被刪除的那個數

varleft = ;//存放比基準點小的陣列

varright = ;//存放比基準點大的陣列

for(vari = 0; i < arr.length; i++)else

}

//遞迴執行以上操作,對左右兩個陣列進行操作,直到陣列長度為<=1;

returnquicksort(left).concat([pivot], quicksort(right));

};

使用的時候,直接呼叫quicksort()就行了。

參考文獻:

關於JS的快速排序實現方法

由於自己不是計算機專業,資料結構沒有太多研究,曾經面試時有被問過關於快速排序以及氣泡排序的寫法,氣泡排序比較簡單,當時能回答出來,但是快速排序當時就比較懵逼,不知道是個什麼方式實現的,面試回來後也沒太在意,最近在看c語言的資料結構,拓展下這方面的知識,其中就看到了關於快排演算法的描述 描述如下 在待...

快速排序的js實現

該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。var quicksort function arr var pivotindex math.floor arr....

js實現快速排序

快排思想 1 在資料集之中,選擇乙個元素作為 基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊。var quicksort function arr var pivotindex math.floor arr.length 2 var ...