2017-03-14 4 views
0

私は最近バイナリ検索を学びました....私はO(log n)の時間の複雑さに非常に感銘を受けましたが、ソートされた配列を得るためにはソートされた演算、すなわち最小O (nlogn)の複雑さはかなり大きいです。バイナリ検索操作のための並べ替えられた配列を取得する方法?

+0

あなたの質問は何ですか? – klutt

+0

私は疑問を持っています.....バイナリ検索を実行するためには、最初にnlognを取るソートされた配列を取得する必要があります。したがって、必要な数を得るためには、O(n)時間よりもO(nlogn)よりも良い数を線形検索することで得られるかもしれません。 –

答えて

0

ソートされていない(ソートされていることが保証されていない)リストがある場合は、リニア検索が必要です。線形探索はO(n)であり、ソートはO(nlog n)であり、これは悪化する。リストがソートされているかどうかをチェックすることもO(n)です。

リストを一度しか検索しない場合は、線形検索のほうがよいでしょう。何回か検索する場合は、まずリストをソートすると効果があります。特定のケースに最適なものを見つけるには、問題を分析する必要があります。

0

アイデアは、リストを一度ソートして結果を保持することです。その後の検索はO(log n)です。したがって、多くの検索での複雑さは(n log n) + S*log(n)です。ここでは、Sが検索の数です。配列をソートしないと、複数の検索のコストはO(S*n)になります。

関連する問題