傳統的隨機快速排序,是選定乙個數,然後以這個數為標桿,分為小於等於(標桿)區和大於(標桿)區。
改進的快速排序,分為,小於區,等於區和大於區。這個劃分的過程用partition函式實現。
具體請看**。
#ifndef quicksort_h
#define quicksort_h
#include#include#includeusing namespace std;
void swap(vector&arr, int i, int j)
vectorpartition(vector&arr, int l, int r)
else if (arr[l] > arr[r])//當前數大於劃分值
swap(arr, l, --more);//交換當前數和大於區邊界
else
++l;//當前數與劃分值相等,啥也不幹,往下看下乙個數。
} swap(arr, more, r);//當l與more遇上了,則把劃分值和大於區的邊界交換回來
vectorp;//返回等於區的邊界
return p;
}void quicksort(vector&arr, int l, int r) }
void quicksort(vector&a)
#endif
int main()
; quicksort(a);
for (auto c : a)
cout << c << " ";
system("pause");
return 0;
}
Python 實現快速排序和隨機快速排序
直接上 快速排序 coding utf 8 defquicksort a,left,right if leftmid partition a,left,right quicksort a,left,mid 1 quicksort a,mid 1,right defpartition a,left,r...
C 快速排序 隨機快速排序 學習記錄
都是網上的資源,侵刪。快速排序演算法以及其他演算法的時間以及空間複雜度 我認為比較好理解的思路 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。坑填數1 i l j r 將基準數挖出...
隨機快速排序
問題畫出來小於區域和等於區域,劃偏 1,2,3,4,5,6,7 7 7 總拿最後乙個劃分,跟資料狀況有關,比較差的蛻變程o n 2 6,5,4,3,2,1 1,1 資料分布比較差 比價好的情況 x t n 2t n 2 o n n nlogn 隨機快速排序 隨機選擇乙個數和最後乙個替換一下 長期期望...