找到数组中最接近的两个元素之间的距离
问题描述:
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;
答
我建议你不要使用算法(O(n^2)
),而是数字进行排序,然后做一个线性扫描(O(nlogn)
)。
答
是的,phant0m是正确的,但排序算法本身会使用循环。
排序算法通常由它们的效率来判断。在这种情况下,效率是指算法的效率,因为输入的大小变大,通常基于要排序的元素的数量。大多数使用的算法具有O(n^2)或O(n * log(n))的算法效率。 (http://www.cprogramming.com/tutorial/computersciencetheory/sortcomp.html)
除非数组已经有点排序了,否则你以后需要排序的版本,或者你的数组真的很大,你可能会以及“咬紧牙关”并坚持原来的做法。
这不是一个家庭作业解决网站。你有没有遇到一个真正的问题,而不是“我什么都不知道”? – phant0m