找到数字数组中两个最接近元素之间的距离

时间:2012-06-10 11:20:55

标签: arrays

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;

2 个答案:

答案 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)

除非阵列已经有点订购,否则你后来需要排序版本,或者你的阵列真的非常大,你也可以“咬紧牙关”并坚持你的原始方法。