采用递归/分治法解决
#include<stdio.h>
#include<math.h>
int aa = 0;//定义aa和bb两个点用于存储一维直线上点的下标
int bb = 0;
int dd = 100;//随意定义的数字
int A[100];
int distance(int a,int b) {
//两点之间的距离
return abs(a-b);
}
void closedis(int low, int high) {
if (low == high) {
return ;//表示只有一个点
}
else if (low + 1 == high) {
//表示有两个点
if(dd > distance(A[low],A[high])){
dd = distance(A[low],A[high]);
aa = low;
bb = high;
}
} else {
//三个点以上就开始递归
int mid = (low + high) / 2;
closedis(low, mid);
closedis(mid + 1, high);
if(dd > distance(A[mid],A[mid + 1])){
dd = distance(A[mid],A[mid + 1]);
aa = mid;
bb = mid + 1;
}
}
}
int main() {
int temp;
int num;
int length;
printf("请输入点的数量:");
scanf("%d",&length);
printf("\n");
for(int i = 0; i< length; i++) {
printf("请输