【文章內容簡介】
oint[] points, int length) { Random ra = new Random()。 for (int i = 0。 i length。 i++) { points[i] = new Point()。 points[i].x = (float)() * 200 100。 points[i].y = (float)() * 200 100。 } } public static float Distance(Point a, Point b) { return (float)(( ) * ( ) + ( ) * ( ))。 } public static float Closetspair(Point[] points, int length, Point a, Point b) { float distance。//記錄集合中最近的兩點 float d1, d2。//記錄分割后兩個子集中各自最小點對距離 int i = 0, j = 0, k = 0。//用于控制for循環(huán)的循環(huán)變量 Point a1 = new Point()。 Point b1 = new Point()。 Point a2 = new Point()。 Point b2 = new Point()。 //保存分割后兩個子集中最小點對 if (length 2) return No_distance。//如果子集長度小于2,定義為最大距離,表示不可達 if (length == 2) { distance = Distance(points[0], points[1])。 } else { Point[] pts1 = new Point[length]。//兩個子集分別放入這兩個 Point[] pts2 = new Point[length]。 float mid = points[(length 1) / 2].x。//排完序后的中間下標值,即中位數(shù) for (i = 0。 i length / 2。 i++) { pts1[i] = points[i]。 } for (j = 0, i = length / 2。 i length。 i++) { pts2[j++] = points[i]。 } d1 = C