演算法學習(一) 遞迴與分治策略(2)

2021-07-15 06:05:57 字數 889 閱讀 9817

幾個經典題目

1.二分搜尋:給定已排好序的n個元素a[0:n-1],現要在這n個元素中找出一指定元素x。

比較簡單,直接貼**

int binary_search(int a,int x)//二分搜尋,找到x返回角標,不存在則返回-1;

return -1;

}

2歸併排序

對於兩個有序陣列,可通過一重迴圈,將其排序。將陣列逐次分割,最後分割n個陣列,可以認為此陣列有序。然後在往回歸並,最終得到有序數列。

完整**如下:

#include using namespace std;

void merge_div(int low,int high);//分割,歸併

void merge_sort(int low,int high,int mid);//排序

int a[10]=;

void input();

int main()

void merge_div(int low,int high)

void merge_sort(int low,int high,int mid)

void readdata()

void quicksort(int low,int high)

return ;

}int position(int low,int high)

{ int num=a[low];

int i=low,j=high;

while(inum)//從右向左找比num小的點。注意i

遞迴演算法與分治策略

關於遞迴的學習 1 遞迴演算法的基本思想是 把規模大的 較難解決的問題變成規模較小的的問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。遞迴是一種直接或間接呼叫自身的函式的一種演算法,很常用,一般用於解決三類問題 資料的定義按遞迴定義的。fibona...

遞迴與分治策略

1 全排列問題 設r n 是要進行排列的n個元素。集合x中元素的全排列記為perm x 求r n 的全排列perm r n 用遞迴演算法求解 1 找出遞迴子結構性質 即原問題的解包含了子問題的解,且子問題的描述與原問題相同。這就可以用子問題的解來構造原問題的解。設r i r n 這是乙個子問題。設 ...

遞迴與分治策略

1.遞迴 直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。1 階乘函式 include using namespace std int main int factorial int n 2 fibonacci數列 include using namespace st...