快速排序是由c.a.r.hoare(1962)開發出來的,該演算法在陣列中選擇乙個稱為主元(pivot)的元素,然後將陣列分為兩個部分,使得第一部分的元素都小於或者等於主元,而第二部分的所有元素都大於主元。對第一部分遞迴應用快速排序演算法,然後是第二部分。以此類推,一直到不能再劃分為止。
**如下:
第一步,劃分:
int partition(int
list, int first, int last)
}while (high > first&&list[high] >= pivot)
high--;
//將主元放置。
if (pivot > list[high])
else
}
第二步,遞迴使用快速排序:
if (last > first)
}
快速排序 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 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...