A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© laiminghui 高级黑马   /  2013-9-23 16:33  /  2168 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-24 08:28 编辑

不懂

不懂呀

问题一:如果是一个复杂的无序数列,搜索一个目标数时,有两种寻找方式   1.先排序然后再搜索。2.不排序直接搜索。这两种方式那种比较快。哪种算法效率比较高。



问题二:如果是一个复杂的无序数列,要搜索多个目标值。也就是要做多次搜索。那么也是两种寻找方式  1.先排序然后再搜索。2.不排序直接搜索。这两种方式在多次搜索,和一次搜索是不是一样的呢???哪种效力高?

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

16 个回复

倒序浏览

回帖奖励 +10

本帖最后由 FFF 于 2013-9-23 16:56 编辑

很有意思的排序问题、
看数据量来回答这个问题。
如果是数据量大且复杂的数列、不管是查找多个还是一个。都是先排序然后再用二分法等方法搜索。效率比较高。比较快。
如果只是几个简单且数量少的数列、不管是查找多个还是一个。直接查找效率比较高,速度比较快。

以上只是个人观点。如有错误欢迎指正!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 有自己的想法

查看全部评分

回复 使用道具 举报 1 0
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在找的话情况是一样的 只是多了排序的步骤
第二个问题  排序之后再查找 效率要高一些  第一个数据同上  查找第二个数据的时候只需要在第一个数据查找的基础上再去查找就好了 一次类推

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 加油

查看全部评分

回复 使用道具 举报
麦田守望者0812 发表于 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在 ...

你错了!!!排序后可以用折半查找,有句话是这么说的 ,”要查找,先排序“。
回复 使用道具 举报
不知道java里有没有contains方法{:soso_e136:}
回复 使用道具 举报
我觉得第一个用直接查找,第二个用先排序后查找
回复 使用道具 举报
楼上正解,对于只搜索一次,这样如果先排序,在搜索,会比较耗时。
而问题二,对于要搜索多的,这必须先排序,因为排序之后便于查找,如果不排序,那么每次查找,会更加的耗时。因此,我认为这样比较好!!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!

查看全部评分

回复 使用道具 举报
提要:对于排序,有很多方法,一项快速排序法的速度是O(nlogn)到O(n^2).  那么就是说,如果考虑了2次(当然了.元素数量是要多点的)以上的查找.是需要排序的.

问题一:如果是一个复杂的无序数列,搜索一个目标数时,有两种寻找方式   1.先排序然后再搜索。2.不排序直接搜索。这两种方式那种比较快。哪种算法效率比较高。
解答:如果搜索一个目标一次,那么是2的快,效率是2的高,因为2的时间复杂度只有O(n),而1需要排序加上查找.我也说了,排序所用时间肯定比O(n)大的

问题二:如果是一个复杂的无序数列,要搜索多个目标值。也就是要做多次搜索。那么也是两种寻找方式  1.先排序然后再搜索。2.不排序直接搜索。这两种方式在多次搜索,和一次搜索是不是一样的呢???哪种效力高?
解答:多个目标.比如x个,就要搜索x次,时间复杂度是O(n)*x.如果x=n呢?就是n方了.
       如果用快速排序法,加上折半查找,那么所用时间复杂度是 O(n^2)+x*log2(n) 当然是比1快很多

上述如有错误,请指点.

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 算法学的很扎实!看好你!

查看全部评分

回复 使用道具 举报
黑色海 发表于 2013-9-23 17:31
不知道java里有没有contains方法

额,你以前学的是什么语言啊
回复 使用道具 举报
酱爆 发表于 2013-9-23 17:02
你错了!!!排序后可以用折半查找,有句话是这么说的 ,”要查找,先排序“。
...

{:soso_e142:}{:soso_e142:}基础不错哦亲!
回复 使用道具 举报
如果问题已经解决,请及时修改主题成“已解决”。
回复 使用道具 举报
酱爆 发表于 2013-9-23 17:02
你错了!!!排序后可以用折半查找,有句话是这么说的 ,”要查找,先排序“。
...

你说的很对,是我错了,没看清楚,Sorry!!!!!{:soso_e150:}
回复 使用道具 举报
黄炳期 发表于 2013-9-23 19:00
额,你以前学的是什么语言啊

一直都是C#,不过C#和java很相似
回复 使用道具 举报
FFF 发表于 2013-9-23 16:42
很有意思的排序问题、
看数据量来回答这个问题。
如果是数据量大且复杂的数列、不管是查找多个还是一个。都 ...

thanks          {:soso_e130:}
回复 使用道具 举报
麦田守望者0812 发表于 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在 ...

thanks
              {:soso_e130:}
回复 使用道具 举报
麦田守望者0812 发表于 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在 ...

thanks        {:soso_e130:}
回复 使用道具 举报
jìng╮煜 发表于 2013-9-23 18:44
提要:对于排序,有很多方法,一项快速排序法的速度是O(nlogn)到O(n^2).  那么就是说,如果考虑了2次(当然了.元 ...

thanks         {:soso_e130:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马