#include
#include
#include
using
namespace std;
const
int maxn=
10010
;int a[maxn]
;int n;
//快排的思路是兩步:split+分治,我們不妨約定,陣列從1開始儲存有效數字
//第一步是split,目的是以陣列的第乙個元素為基準,將小於它的元素排到前面,大於它的元素排到後面
//返回值是基最後的位置
intsplit
(int low,
int high)
}swap
(a[low]
,a[i]);
int ans=i;
return ans;
}//quicksort實現的功能就是排序
void
quicksort
(int low,
int high)
}void
printn()
}int
main()
quicksort(1
,n);
printn()
;}
演算法 快速排序 基於分治思想的實現
今天看了 演算法導論 的快排部分,又更加理解了這個演算法 現在將它實現了,以後就直接用了 備註 主元 x 的選擇,可以採用隨機選擇,避免碰到輸入為接近排序的那種序列,防止時間複雜度下降到o n 2 include using namespace std 這個函式的作用是將陣列a從下標p到r這部分進行...
分治演算法 快速排序
一.演算法思想 假設要對某陣列進行由小 大排序 1 分解 對於亂序陣列a r 訪問範圍 0 r 有r 1個數 取乙個基準元素a p 一般以第乙個數即a 0 為基準 確定某個partition 位置 q 使a q 右邊的數都大於等於a p a q 左邊的數都小於等於a p 2 遞迴分治 分解之後,陣列...
快速排序 分治演算法
基於分治策略的排序在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大 小 的記錄一次就能交換到後 前 面單元,總的比較和移動次數較少。基本思想 對於輸入子陣列a p r 分解 以a p 為基準元素將a p r 劃分成三段a p q 1 a q 和a q 1 r 使得a p q 1 中任一...