色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 快速排序

當(dāng)我們需要對(duì)一個(gè)無(wú)序的數(shù)組進(jìn)行排序時(shí),快速排序算法是一種高效的選擇。它通過(guò)將數(shù)組分為兩個(gè)較小的子數(shù)組來(lái)遞歸地排序最終達(dá)到整個(gè)數(shù)組有序。

下面我們來(lái)看一段簡(jiǎn)單的javascript代碼實(shí)現(xiàn)快速排序:

function quickSort(arr) {
if (arr.length<= 1) {
return arr;
}
const pivot = arr[Math.floor(arr.length / 2)];
const left = [];
const right = [];
for (let i = 0; i< arr.length; i++) {
if (i === Math.floor(arr.length / 2)) {
continue;
}
if (arr[i]< pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
const unsortedArray = [3, 1, 8, 4, 7, 2, 6, 5];
console.log(quickSort(unsortedArray)); // [1, 2, 3, 4, 5, 6, 7, 8]

我們從數(shù)組中選擇中點(diǎn)(pivot),并將其與數(shù)組中其他元素進(jìn)行比較。將小于pivot的元素放入left子數(shù)組中,大于pivot的元素放入right子數(shù)組中。遞歸地對(duì)left和right子數(shù)組進(jìn)行排序,并將結(jié)果返回。最后,將排序后的left子數(shù)組、pivot和排序后的right子數(shù)組連接在一起即可得到有序的數(shù)組。

下面讓我們看一下算法的時(shí)間復(fù)雜度??焖倥判蛩惴ǖ钠骄鶗r(shí)間復(fù)雜度為O(n log n),最壞情況下時(shí)間復(fù)雜度為O(n^2)。最壞情況下的情形是當(dāng)數(shù)組的pivot點(diǎn)選取不當(dāng)時(shí),每個(gè)遞歸分治的子數(shù)組都非常接近于原數(shù)組,而遞歸過(guò)程會(huì)無(wú)限地進(jìn)行下去。但通過(guò)隨機(jī)選取pivot點(diǎn)或選用其他特殊的pivot選取方法可以減少出現(xiàn)最壞情況的概率。

快速排序是一種高效的排序算法。它不需要額外的存儲(chǔ)空間,而且在處理大數(shù)據(jù)集時(shí)表現(xiàn)良好。因此,它經(jīng)常被用于web應(yīng)用程序中的數(shù)據(jù)處理。