算法学习笔记4——蛮力法求解最近对问题并测算算法运行时间

完整代码:

#include<iostream>
#include<time.h> 
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<windows.h>
#include<iomanip>
using namespace std;
struct point
{
	int x, y;
};
void Initial(int N, point* p) 
{    srand(time(0));  //种子为数据的规模  
     int i;    
    for (i = 0; i < N; i++) {  
//产生随机数,X集和Y集中点的内容是一样的,只是排序的方法不同而已        
          	p[i].x = rand()%(10-1)+1;        
          	p [i].y = rand()%(10-1)+1;
		    cout<<"("<<p[i].x<<","<<p[i].y<<")"<<endl;        
	}
}
double Distance(point a, point b)
{
	return sqrt(double((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)));
}
double Closest_BF(point S[ ], int low, int high){
	point I,J;
	int index1,index2;
	double d=100000,minDist=10000;
	for(int i=low;i<high;i++)
		for(int j=i+1;j<high+1;j++){
			d=Distance(S[i],S[j]);
			if(d<minDist){
				minDist=d;
				index1=i;
				index2=j;
				I=S[i];J=S[j];
			}
		}
	cout<<"("<<I.x<<","<<I.y<<")"<<"和"<<"("<<J.x<<","<<J.y<<")"<<"之间的距离最小"<<endl;	
	return minDist;
}
int main(){
	LARGE_INTEGER nFreq;
    LARGE_INTEGER nBeginTime;
	LARGE_INTEGER nEndTime;
	double time;

	point S[20];
	cout<<"输入点的个数为12"<<endl; 
	Initial(12,S);
	float distance=Closest_BF(S,0,12);
	cout<<"蛮力法求解最近距离为"<<distance<<endl;
	
	QueryPerformanceFrequency(&nFreq);
 	QueryPerformanceCounter(&nBeginTime); 
    for (int i = 0; i < 1000; i++)
	{
		i++;
	}
	QueryPerformanceCounter(&nEndTime);
	time=(double)(nEndTime.QuadPart-nBeginTime.QuadPart)*1000000000/(double)(nFreq.QuadPart);
	cout  << "程序运行时间:"<<time; //单位是纳秒. 

	return 0;
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值