快速排序(QuickSort)

2022-08-02 17:30:18 字數 607 閱讀 9757

快速排序是基於氣泡排序的改進,是基於分治思想

在待排序表l[1...n]中選取乙個元素(base)作為基準,一次排序後將排序表劃分兩個部分l[1...k-1]和l[k+1...n],其中l[1...k-1]中的元素小於base,l[k+1...n]中的元素大於base,然後將base放到l[k]的位置上,這個過程稱為一趟快速排序

遞迴兩個子表,不斷重複,直至剩乙個元素或空為止。

重點:劃分、過程特徵

劃分,遞迴:

void quicksort(int arr ,int low, int

high)

}

一次快速排序:

int partition(int arr, int low, int

high)

arr[low] =a;

return

low;

}

空間效率:

需要借助遞迴棧來儲存每層遞迴資訊。

最好情況:o(log2(n+1))

最壞情況:o(n)

平均情況:o(log2n)

時間效率:

快速排序 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 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...