欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 快速排序

錢斌斌1年前6瀏覽0評論

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

下面我們來看一段簡單的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ù)組中。遞歸地對left和right子數(shù)組進(jìn)行排序,并將結(jié)果返回。最后,將排序后的left子數(shù)組、pivot和排序后的right子數(shù)組連接在一起即可得到有序的數(shù)組。

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

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