com论坛,
我正在尝试在C ++中编译下面的算法。有什么想法吗?
// Find the distance between the two closest elements in an array of numbers.
// Minimum Distance
// dmin = infinity;
// for i = (i to n - 2) do
// for j = i + 1 to n - 1 do
// temp = A[i] - A[j]
// if temp < dmin;
// dmin = temp;
// return dmin;
答案 0 :(得分:1)
我建议您不要使用该算法(O(n^2)
),而是对数字进行排序,然后进行线性扫描(O(nlogn)
)。
答案 1 :(得分:0)
是的,phant0m是正确的,但排序算法本身会使用循环。
排序算法通常根据其效率来判断。在这种情况下,效率指的是算法效率,因为输入的大小变大并且通常基于要排序的元素的数量。使用的大多数算法具有O(n ^ 2)或O(n * log(n))的算法效率。 (http://www.cprogramming.com/tutorial/computersciencetheory/sortcomp.html)
除非阵列已经有点订购,否则你后来需要排序版本,或者你的阵列真的非常大,你也可以“咬紧牙关”并坚持你的原始方法。