社区
数据结构与算法
帖子详情
一个无序的整数数组,找出两个最接近的数,时间复杂度最快能达到多少?
Aaron_Jerry
2009-07-17 10:45:08
如题。谢谢
...全文
1508
28
打赏
收藏
一个无序的整数数组,找出两个最接近的数,时间复杂度最快能达到多少?
如题。谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuxing_hui
2010-03-23
打赏
举报
回复
你的想法很好,但可以这样处理,设一个标志数组,大小和原来数组相等,记录位置确定状态,当某个元素的位置最终确定时,将此元素对应的标志置为true,同时看它前后相邻的元素的位置是否确定,如果确定了,就将其最小差值记录下来,这样,即使某个元素位置确定时,它的前后元素的位置没有确定,最终等它的前后元素的位置确定后,它与前后元素的差值总会被计算出来。
上面的方法还可以改进,可以去掉位置确定标志数组,因为快速排序时,假设对a[n] a[n+1] ... a[n+k]
这个区间进行partion,当某个元素a[x] 在这轮partion中被定位下来放在 m 位置 (n <= m <= n+k),如果m != n || m != n+k 则不需要计算这个元素与前后元素的差值,因为a[x]如果不被放在区间的第一个或者最后一个,意味着它被放在了区间的中间,则它前后的元素必定没有被定位(请仔细分析)。
[Quote=引用 26 楼 hezhiyonging 的回复:]
快速排序在一次排序之后,可以确定一个元素的位置,但是他前后的元素的位置并不能确定,所以,你在“每确定一个元素的位置后记下这个元素前后的差值,保存最小值,”,是不合理的,不知道是否正确。
引用 18 楼 yuxing_hui 的回复:
先快速排序,在排序的过程中,每确定一个元素的位置后记下这个元素前后的差值,保存最小值,这样,当整个
数组排完后,这个最小值也计算出来了,不必要分成两个步骤……
[/Quote]
hezhiyonging
2009-09-30
打赏
举报
回复
快速排序在一次排序之后,可以确定一个元素的位置,但是他前后的元素的位置并不能确定,所以,你在“每确定一个元素的位置后记下这个元素前后的差值,保存最小值,”,是不合理的,不知道是否正确。
[Quote=引用 18 楼 yuxing_hui 的回复:]
先快速排序,在排序的过程中,每确定一个元素的位置后记下这个元素前后的差值,保存最小值,这样,当整个
数组排完后,这个最小值也计算出来了,不必要分成两个步骤(先排完序,在找最小值)。
[/Quote]
poson
2009-09-30
打赏
举报
回复
先一遍扫描,求最大,最小和均值。
x=(max-min)/avg
用x把数分成很多个区间,用hash做。
然后再每个区间求最小距离。相邻区间也要求一次。
yangyongde2002
2009-09-30
打赏
举报
回复
[Quote=引用 24 楼 hyram 的回复:]
引用 22 楼 orangeguy 的回复:
就是求一维最小曼哈顿距离, 复杂度O(n)
能不能详细讲一下?
[/Quote]
我猜他讲不出来!
hyram
2009-09-28
打赏
举报
回复
[Quote=引用 22 楼 orangeguy 的回复:]
就是求一维最小曼哈顿距离, 复杂度O(n)
[/Quote]
能不能详细讲一下?
fire_woods
2009-09-28
打赏
举报
回复
n*log(n)
orangeguy
2009-09-28
打赏
举报
回复
就是求一维最小曼哈顿距离, 复杂度O(n)
yuxing_hui
2009-07-22
打赏
举报
回复
先快速排序,在排序的过程中,每确定一个元素的位置后记下这个元素前后的差值,保存最小值,这样,当整个
数组排完后,这个最小值也计算出来了,不必要分成两个步骤(先排完序,在找最小值)。
juggernaut620
2009-07-22
打赏
举报
回复
不会
LeonTown
2009-07-22
打赏
举报
回复
再问一下,
可不可以用二分法啊~
abcdef0966
2009-07-22
打赏
举报
回复
[Quote=引用 18 楼 yuxing_hui 的回复:]
先快速排序,在排序的过程中,每确定一个元素的位置后记下这个元素前后的差值,保存最小值,这样,当整个
数组排完后,这个最小值也计算出来了,不必要分成两个步骤(先排完序,在找最小值)。
[/Quote]
这样做比先排序再找最小差值也没啥优势啊
shex4
2009-07-21
打赏
举报
回复
我也比较土:排序 O( nlgn )
+ 计算“ a[n]-a[n-1] n from 1 ” O(n)
hash以后还是要查看每个小bucket吧?
zhengjiaxiang135
2009-07-21
打赏
举报
回复
转转 学习~~~
abcdef0966
2009-07-21
打赏
举报
回复
先排序
将排序后的数组元素a[i]-a[i-1]->b[i]
再在b[i]中找出最小值
菜鸟,欢迎拍砖
abcdef0966
2009-07-21
打赏
举报
回复
[Quote=引用 14 楼 abcdef0966 的回复:]
先排序
将排序后的数组元素a[i]-a[i-1]->b[i]
再在b[i]中找出最小值
菜鸟,欢迎拍砖
[/Quote]
复杂度可达到 O(nlgn) + O(n) = O(nlgn)
LeonTown
2009-07-20
打赏
举报
回复
或许可以通过分治法来处理。
每次将数组分成两部分,分别找距离最小的两个数,和距离;
对相邻组间的数,比较距离在全局距离最小值范围内的数。
jlp999
2009-07-20
打赏
举报
回复
学习,没明白:(
showjim
2009-07-18
打赏
举报
回复
1.数组大的时候可以用位图,第一遍扫数组,第二遍扫位图。
2.数组小的时候用哈希合并,第一步从最后一位开始逐位合并直到某个哈希键值有两个值(最小值与最大值),第二步扫描哈希表(如果存在下键值,则本键最大值与下键最小值之差也要计算)计算最小差值。
showjim
2009-07-18
打赏
举报
回复
1.数组大的时候可以用位图,第一遍扫数组,第二遍扫位图。
2.数组小的时候用哈希合并,第一步从最后一位开始逐位合并直到某个哈希键值有两个值(最小值与最大值),第二步扫描哈希表(如果存在下键值,则本键最大值与下键最小值之差也要计算)计算最小差值。
dirtysalt
2009-07-18
打赏
举报
回复
如果这个无序数组是静态的话,排序可能是最快的吧O(nlgn)
如果这个无序数组是动态的话,可以通过扩展平衡树达到(nlgn).可以看看算法导论14.3-6这个习题
加载更多回复(8)
给定
一个
无序
整
数
数
组
,
找出
两个
数
字满足他们的和等于目标
数
字
无序
数
组
寻找两
数
满足两
数
之和等于目标值
【LeetCode】快排-
无序
整
数
数
组
中找第k大的
数
(或者最小的k个
数
)
一个
有代表性的题目:
无序
整
数
数
组
中找第k大的
数
,对快排进行优化。 这里先不说这个题目怎么解答,先仔细回顾回顾快排,掰开了揉碎了理解理解这个排序算法:
时间复杂度
、空间复杂度;什么情况下是复杂度最高的情况。 1.主要思想 通过一趟排序将要排序的
数
据分割成独立的两部分,其中一部分的所有
数
据比另一部分的所有
数
据要小,再按这种方法对这两部分
数
据分别进行快速排序,整个排序过程可以递归进行,使整个
数
据变成有序序列。 快排是冒泡排序的改进,改进点:冒泡排序每次只能交换相邻的
两个
元素,而快速排序是跳跃式的交换,交换的
给一列
无序
数
组
,求出中位
数
并给出算法的
时间复杂度
若
数
组
有奇
数
个元素,中位
数
是a[(n-1)/2];若
数
组
有偶
数
个元素,中位
数
为a[n/2-1]和a[n/2]
两个
数
的平均值。这里为方便起见,假设
数
组
为奇
数
个元素。 思路一:把
无序
数
组
排好序,取出中间的元素。
时间复杂度
取决于排序算法,
最快
是快速排序,O(nlogn),或者是非比较的基
数
排序,时间为O(n),空间为O(n)。这明显不是我们想要的。 思路二:采用快速排序的分治partiti...
算法:给定
一个
整型
数
组
,
找出
两个
整
数
为指定
整
数
的和
题目 给定
一个
整型
数
组
,是否能
找出
其中的
两个
数
使其和为某个指定的值?(假定是
无序
数
组
) 解法一:暴力破解(穷举法,不提倡) /** * 给定
一个
整型
数
组
,是否能
找出
其中的
两个
数
使其和为某个指定的值?(假定是
无序
数
组
) * 暴力破解 (穷举,
时间复杂度
:O(n^2),正常不会用这个,假如只是为了快速解题,对时间没有限制,用这个最简单) * * @param nums
无序
整形
数
组
...
无序
整
数
数
组
中找第k大的
数
经典问题:写一段程序,
找出
数
组
中第k大的
数
,输出
数
所在的位置。 【解法一】先排序,然后输出第k个位置上的
数
我们先假设元素的
数
量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这里,快速排序或堆排序都是不错的选择,他们的平均
时间复杂度
都是 O(N * logN)。然后取出前 K 个,O(K)。总
时间复杂度
O(N * logN)+ O(K) = O(N * logN)。你一定注意到
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章