五大核心算法
分治法
分治法概述
分治法就是将一个比较复杂的问题分解成比较小的子问题,自顶向下求解。其中分为两个步骤,分和治
分:就是将原问题分解成子问题,若子问题已经可以得出最终的解,就将解返回。若规模仍然太大,就继续分解
治:将一个个子问题大解合并成原问题大解
分治法具体实现
#include <iostream>
using namespace std;
int fun(int *arr,int start,int end,int num){
if(start>end){
return -1;
}
int mid=(start+end)/2;
if(arr[mid]>num){
return fun(arr,start,mid-1,num);
}else if(arr[mid]<num){
return fun(arr,mid+1,end,num);
}else{
return mid;
}
}
int main(void){
int arr[10]={1,2,3,4,5,6,7,8,9,0};
sort(arr,arr+10);
int ret=fun(arr,0,9,0);
if(ret!=-1){
cout<<ret<<endl;
}else{
cout<<"元素不存在"<<endl;
}
return 0;
}