黑马程序员技术交流社区

标题: 一个有关排序的问题... [打印本页]

作者: laiminghui    时间: 2013-9-23 16:33
标题: 一个有关排序的问题...
本帖最后由 杨增坤 于 2013-9-24 08:28 编辑

不懂

不懂呀

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



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


作者: FFF    时间: 2013-9-23 16:42
本帖最后由 FFF 于 2013-9-23 16:56 编辑

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

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

作者: 麦田守望者0812    时间: 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在找的话情况是一样的 只是多了排序的步骤
第二个问题  排序之后再查找 效率要高一些  第一个数据同上  查找第二个数据的时候只需要在第一个数据查找的基础上再去查找就好了 一次类推
作者: 酱爆    时间: 2013-9-23 17:02
麦田守望者0812 发表于 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在 ...

你错了!!!排序后可以用折半查找,有句话是这么说的 ,”要查找,先排序“。

作者: 黑色海    时间: 2013-9-23 17:31
不知道java里有没有contains方法{:soso_e136:}
作者: HM代景康    时间: 2013-9-23 17:31
我觉得第一个用直接查找,第二个用先排序后查找
作者: 薆情媬証書    时间: 2013-9-23 18:04
楼上正解,对于只搜索一次,这样如果先排序,在搜索,会比较耗时。
而问题二,对于要搜索多的,这必须先排序,因为排序之后便于查找,如果不排序,那么每次查找,会更加的耗时。因此,我认为这样比较好!!
作者: jìng╮煜    时间: 2013-9-23 18:44
提要:对于排序,有很多方法,一项快速排序法的速度是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快很多

上述如有错误,请指点.
作者: 黄炳期    时间: 2013-9-23 19:00
黑色海 发表于 2013-9-23 17:31
不知道java里有没有contains方法

额,你以前学的是什么语言啊
作者: 黄炳期    时间: 2013-9-23 19:06
酱爆 发表于 2013-9-23 17:02
你错了!!!排序后可以用折半查找,有句话是这么说的 ,”要查找,先排序“。
...

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

你说的很对,是我错了,没看清楚,Sorry!!!!!{:soso_e150:}

作者: 黑色海    时间: 2013-9-24 08:39
黄炳期 发表于 2013-9-23 19:00
额,你以前学的是什么语言啊

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

thanks          {:soso_e130:}

作者: laiminghui    时间: 2013-9-27 21:02
麦田守望者0812 发表于 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在 ...

thanks
              {:soso_e130:}

作者: laiminghui    时间: 2013-9-27 21:03
麦田守望者0812 发表于 2013-9-23 16:52
第一个问题 感觉不排序直接搜索效率高 在N个数据中找一个数据直接查找最差的情况只要找N次就可以了 排序在 ...

thanks        {:soso_e130:}

作者: laiminghui    时间: 2013-9-27 21:03
jìng╮煜 发表于 2013-9-23 18:44
提要:对于排序,有很多方法,一项快速排序法的速度是O(nlogn)到O(n^2).  那么就是说,如果考虑了2次(当然了.元 ...

thanks         {:soso_e130:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2