記錄在pta上做的幾道關於分治與遞迴的題目筆記
time:2021.3.11
函式介面:
void
merge
(sqlist l,
int low,
int m,
int high)
;//合併兩個有序序列
void
mergesort
(sqlist l,
int low,
int high)
;//遞迴切分序列
函式**
void
merge
(sqlist l,
int low,
int m,
int high)
while
(i <= m)
temp[k++
]= l.elem[i++];
while
(j <= high)
temp[k++
]= l.elem[j++];
for(i=
0; i) l.elem[low+i]
= temp[i]
;}
void
mergesort
(sqlist l,
int low,
int high)
}
函式介面
int
binsearch
(int a,
int key,
int low,
int high)
;
**如下
int
binsearch
(int a,
int key,
int low,
int high)
函式介面
int
partition
(sqlist &l,
int low,
int high)
;//實現一趟劃分。
void
qsort
(sqlist &l,
int low,
int high)
;
完整**
int
partition
(sqlist &l,
int low,
int high)
//實現一趟劃分。
l.r[i]
.key=priv;
return i;
}void
qsort
(sqlist &l,
int low,
int high)
}
函式介面
void
maxmin
(int a,
int&e_max,
int&e_min,
int low,
int high)
;
函式介面
void
maxmin
(int a,
int&e_max,
int&e_min,
int low,
int high)
else
}
函式介面
void
max1max2
(int a,
int low,
int high,
int&max1,
int&max2)
;
void
max1max2
(int a,
int low,
int high,
int&max1,
int&max2)
else
if(low==high-1)
else
else
}}
在歸併排序中函式介面為:void merge(sqlist l,int low,int m,int high);//合併兩個有序序列
這裡函式返回值為空,形參也沒有用到指標或傳引用,但是函式的形參卻可以改變實參
pta實驗作業
題目二陣列練習 void main int x,i,j 6 printf 原來的陣列從小到大順序如下 n printf 12,17,20,25,28,30 n printf 請輸入要插的數 n scanf d x a 0 x i j while a i x a i x j for i 1 i j i...
pta陣列作業
7 2 設計思路 本題要求處理資料並輸出最大值及其對應的最小下標,首先輸入n,然後定義乙個長度為n的陣列用於儲存資料,定義m a 0 n 0,從a 1 開始與m進行比較,若某項大於m,就把該項的值賦給m,同時把其下標的值賦給n.迴圈結束後,輸出當前的m和n 流程圖 除錯過程 1,如圖,沒有考慮到輸入...
pta迴圈作業
7 7 計算階乘和 1.題目 2.設計思路 此題目比一道類似的經典題目的區別就是不是直接的數字累加而是每次的數字先累乘之後再累加 只需要在累加之前處理一下所要加的數字就可以實現了 3.流程圖 4.答案結果 題目二 7 5 2.設計思路 定義變數和輸入迴圈次數及輸入題目要求的數字,迴圈比較不斷把最小的...