算法复习1——暴力法

蛮力法
基于问题的描述和所涉及的概念、定义直接求解,逐一列举并处理问题所涉及的所有情形,而后得到问题的答案。
优点:逻辑清晰,简单,易于实现
缺点:效率不高
适用于规模比较小的问题
基本技术:扫描技术和枚举方法


1.排序问题
(1)选择排序
(2)冒泡排序
2.查找问题
顺序查找

3.字符串匹配问题

//蛮力法求解字符串匹配问题
//输入:文本W[0..n-1],模式M[0..m-1],二者均为字符数组
int BruteforceIndex(W[0..n-1], M[0..m-1]) 
{
	for(int i=0; i<=n-m; i++)
	{
		int j=0;
		while(j<m && (W[i+j]==M[j]))
		{
			j++;
			if(j==m)	return i;		//查找成功 
		}
	}
	return -1;		//查找失败 
}


4.几何问题
(1)最近对问题

问题描述:求平面点集n个点中距离最近的两个点

/*暴力法求解最近点对问题
输入:n个点,P[i,0]存第i个点的行坐标,P[i,1]存第i个点的纵坐标 
输出:最近两个点的下标ind1和ind2 
*/
double ClosestPoints(P[n][2],int *ind1,int *ind2)
{
	wind = +∞;			//初值赋成最大值 
	double dis = 0;
	*ind1 = 0, *ind2 = 0;
	for(int i=0; i<=n-2; i++)
		for(int j=i+1; j<=n-1; j++)
		{
			dis = (P[j][0]-P[i][0])*(P[j][0]-P[i][0]) + (P[j][1]-P[i][1])*(P[j][1]-P[i][1]);
			id(dis<wind)
			{
				wind = dis;
				*ind1 = i;
				*ind2 = j;
			}	
		}
	
	return wind;
} 


(2)凸包问题
凸包:由平面上n个点组成的集合,其凸包就是包含这些点的最小凸多边形。
凸包的性质:①如果点集中两个点的连线属于凸多边形的边,当且仅当点集中的其余的点都在两个点连线的同一侧。
   ②凸包中的顶点是点集中的点。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值