算法复习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


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


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











你可能感兴趣的:(数据结构与算法)