javaを始めたばかりの初心者です。
探索やソートといった有名なアルゴリズムはプログラミングしていくなかでよく使われるものなのでしょうか。
また、それらはどのようなときに使うのでしょうか。
教えていただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ベストアンサー
元の回答がミスリーディングなので、斜線消しして、コメントの一部を転記しました。
「データの並び替え」も「要素の探索」もよく行われることです。
ただ「ソート」や「探索」の典型的なアルゴリズムはまさにそのものを使うというのではなく、もっと総合的に判断して使用されます。
競技プログラミングなどでなければ、ピンポイントかつライブラリ使用不可で組むことを要求されることはないと思われます。
ただ、例えば安定ソートかどうかなど、ライブラリの力を借りるにしても知っておかないといけない情報もあります。
また、探索やソートは比較的容易に理解できるので、言語になれるための頭の体操と考えて学んでみたり、組んでみたりするとよいと思われます。
基礎的なアルゴリズムが難しすぎて理解できないと感じるのであれば、今後プログラミングしていくのは茨の道です…
コメントから転記:
ソート:
前処理としてよく使われます。ソートはO(nlogn)なので、先にソートしてからだとその後効率よく処理できることが多々あります。
ソートしておくとその後の探索が2分木になるなど。
ソートされていることを前提にしている量というものもあります。(http://www.randpy.tokyo/entry/roc_auc)
探索:
木構造の探索アルゴリズムでしょうか。深さ優先探索、幅優先探索?
応用先で有名なMinMax法でしょうか。ゲームAIでよく見かけます。
目的関数の最大化・最小化に使えます。
人が見やすい・理解しやすいように「ソート」して、人が欲しいものを「探索」するアルゴリズムなので、プログラミングしていく限り、到るところで出てきますね。
追記して、アルゴリズムはデータ構造とセットです。
例えば、
「探索」という目的に対して、リストであれば一回でO(n)。
複数回やるのなら「ソート」してから次からO(logn)。
それに対して、辞書・ハッシュならO(1)です。
投稿2018/03/13 13:53
編集2018/03/13 14:52総合スコア8560
0
どのようなときに使うのでしょうか。
ぱっと思いつく範囲だと
■ソート
・ランキングを作成したい時。
・検索対象範囲を絞りたい時。
■探索
要素が含まれているか判定したい時。
投稿2018/03/13 14:07
編集2018/03/13 15:19総合スコア5846
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
探索 は search の方が一般的でしょうか?SQLですと SELECT 。
ソートはある順序で並べることです。アルファベット順とか。
ググるといろいろ発見があるでしょう。
初心者さんなら自分で調べてここまでわかったけど、ここから先の理解が難しい、などの質問されると適切なコメントが付くでしょう。
投稿2018/03/13 13:38
総合スコア16415
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
探索やソートといった有名なアルゴリズムはプログラミングしていくなかでよく使われるものなのでしょうか。
思った以上に使わないですね。
使う場合でもおそらくデータベースからデータを抽出することになると思います。
そうするとSQLの操作になるので、プログラム側でどうこうということはあまりないと思います。
また、それらはどのようなときに使うのでしょうか。
例えば商品を画面に出力する処理ですと、商品ID順に並べたいとか、商品名順に並べたいとか、特定のジャンルの商品を抽出したい、とかですかね。
投稿2018/03/14 00:13
総合スコア16996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
使うことはないです。いや、使う人もいるかもしれませんがほとんどの人は使いません。
ただし、アルゴリズムの違いが実行速度やメモリの使用量にどう影響するのかを知り、自分が書いたブログラムがどのような理由で遅いのかを理解するにはアルゴリズムを学ばない手はないと思います。
直接使う場面が多くなくても、ちゃんと役に立つ「ちゃんと野菜も食べるんだよ」的なものです。
ググってみたら良い文章が見つかったのでリンク張ります。
コンピュータサイエンティストはソートアルゴリズムの中身を知るべきか
投稿2018/03/13 14:37
総合スコア2883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/14 00:55
2018/03/14 01:05
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/13 13:59
2018/03/13 14:18
2018/03/13 14:26
2018/03/14 00:52