完整代码:
#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;
}
运行结果: