快速排序 Quicksort

2021-08-18 16:28:17 字數 802 閱讀 2199

快速排序(quicksort),又稱劃分交換排序,簡稱快排!

基本思想:

1.資料集中,選擇乙個元素作為基準(pivot)元素

2.所有小於基準的元素,移到基準的左邊,大於的則移到基準的右邊,這一操作可稱為分割槽(partition)

3.對基準元素左右兩邊的兩個子集,重複步驟1和步驟2,直到所有子集只剩下乙個元素為止。

function

quicksort

(array)

function

partition

(array, left, right)

}//將基準元素放置到最後的正確位置上

swap(array, right, storeindex);

return storeindex;

}function

sort

(array, left, right)

var storeindex = partition(array, left, right);

sort(array, left, storeindex - 1);

sort(array, storeindex + 1, right);

}sort(array, 0, array.length - 1);

return

array;

}console.log('quicksort', quicksort([67, 3, 5, 43, 21, 90, 12, 56]));

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...

快速排序 quicksort

快速排序 quicksort 是分治法的典型例子,它的主要思想是將乙個待排序的陣列以陣列的某乙個元素x為軸,使這個軸的左側元素都比x大,而右側元素都比x小 從大到小排序 然後以這個x在變換後陣列的位置i分為左右兩個子陣列,再分別進行快速排序,直到子陣列中只有乙個元素為止。快速排序演算法如下 void...

快速排序 QuickSort

1,void quicksort int a,int low,int high 這個函式是排序的遞迴部分,mid就是已經確定的基準元素的位置。2,int partition int a,int low,int high 這個函式幹了兩件事 1 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...