2012-06-10 44 views
0

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

这不是一个家庭作业解决网站。你有没有遇到一个真正的问题,而不是“我什么都不知道”? – phant0m

回答

1

我建议你不要使用算法(O(n^2)),而是数字进行排序,然后做一个线性扫描(O(nlogn))。

0

是的,phant0m是正确的,但排序算法本身会使用循环。

排序算法通常由它们的效率来判断。在这种情况下,效率是指算法的效率,因为输入的大小变大,通常基于要排序的元素的数量。大多数使用的算法具有O(n^2)或O(n * log(n))的算法效率。 (http://www.cprogramming.com/tutorial/computersciencetheory/sortcomp.html)

除非数组已经有点排序了,否则你以后需要排序的版本,或者你的数组真的很大,你可能会以及“咬紧牙关”并坚持原来的做法。

相关问题