(
1)分解,將要解決的問題劃分成若干規模較小的同類問題;
(2)求解,當子問題劃分得足夠小時,用較簡單的方法解決;
(3)合併,按原問題的要求,將子問題的解逐層合併構成原問題的解。
#includeusing namespace std;
int a[10]=;
int b[10];
void merge(int a,int s,int m,int e,int tmp);
void swap(int &a,int &b)
void quicksort(int a,int s,int e){
if(s>=e)
return ;//如果初始下標大於等於終止下標,返回乙個空值
int k=a[s];//將k值設定為a[0]在後面的計算中k值不變
int i=s,j=e;
while(i!=j){
while(j>i&&a[j]>=k)
--j;
swap(a[i],a[j]);
while(i思路:
快速排序的精華在於quicksort降低了時間複雜度,並且用兩個while迴圈實現了a[j]數值的變動。
i,j作為兩個哨兵,分別位於起點和終點,然後一起向中間靠近,直到相遇。
在這當中不斷與k進行比較,最終比k的值大的數放在了k的右側,比k的值小的數放在了k的左側。
最終實現了第一輪快速排序,得到一輪排序的序列。
接下來要選擇新的k值作為新的標準,體現了遞迴思想,最終實現完全遞增的數字序列。
總結:快速排序和歸併排序都是採用了分治的思想,都是先分再治,各個擊破。
棋盤覆蓋的詳細演算法如下(分治法)
分析 陣列board m m 表示棋盤 該陣列的所有元素 的初值都為0。chessboard 0,0,0 1 4 t 1,tile 2,tile的初值1賦給t,而後tile自增1變為2 s 2 經判斷 特殊方格在棋盤的左上角。chessboard 0,0,0 1 2 t 2,tile 3 s 1 左...
UITableView 詳細講解
建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...
UITableView 詳細講解
建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...