.NETではデータ構造アルゴリズムに合わせた効率的なソートアルゴリズム/実装を選択しやすいことを重視したのでは?(インタフェース上の話です。実装は知りません) 例えば、配列を利用したListでは(不安定で構わないならば)クイックソートが向いているでしょうし、連結リストを利用したListではマージソートが向くはずです。また、Javaの場合はCollections.sort()でリストの中身を配列に変換してからソートして書き戻すので無駄が多いです。 あしゅさん .NETではデータ構造アルゴリズムに合わせた効率的なソートアルゴリズム/実装を選択しやすいことを重視したのでは?(インタフェース上の話です。実装は知りません) なるほど、効率の面からということですね。リストの内部構造を良く知っている List 自身に Sort を任せるのは、たしかに一理あると思います。ただし、私はつぎの2つの点から、そ
Java 6 までの Concurrency Framework の主役は、 Executor です。Executor を使うと、 非同期処理や複数セッション処理の並列化を、効率的に実装することができます。 Java 7 では、 Fork/Join という新しい仕組みが登場します。これは、 Executor とは異なった種類の計算、 CPU が律速となるような重い計算をターゲットにしています。重い計算を小さなタスクに分割して、小分けになったタスクを複数のスレッド (プロセッサ) が並列実行することで、高速に処理する、という実行モデルです。OpenMP に似ているはずです。使ったことないけど。 Fork/Join の仕組みについて、詳しくは、下記桜庭さんの記事をお読みください。スレッドごとの実行待ち行列の取り回しの仕方など、面白いです。 Java SE 7徹底理解 第2回 細粒度の並行処理
<body> <p>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</p> </body>
<追記>ベンチマークプログラムに誤りがありました。ソート済のシーケンスに対してソートを掛けていました。ご指摘ありがとうございます>ak氏 そんな夢のようなソートアルゴリズムがあるのかというと、あるらしいんです。それがtim sortと呼ばれるアルゴリズムです。 画期的(?)なソートアルゴリズム「Sleep Sort」:濃縮還元オレンジニュース|gihyo.jp … 技術評論社 このあたりで拾ってきたネタですね。 merge sortを改良したアルゴリズムで、安定*1しており、しかも実行速度にも優れているとか。アルゴリズムの性能の評価は済んでいるらしく、CPythonやJDK7には既に導入済みのようですね。 ならば当然Perlのソートも…と考えるわけですが、まず評価のためにJavaのソースをC++にそのまま移植してみました。それがこれ(いちおうテスト済): https://github.co
Java 7のEarly Access版をダウンロードしました。昨日、Joshua Bloch氏にProject Coinへ彼が提案している言語仕様の変更はすでに実装されているのかと聞いたところ、まだプロトタイプされていないということでした。で、その話のついでに、ソートの話になり、Java 7にはTimSortが入っているということで、調べてみました。 従来、コレクションフレームワークのArraysクラスのsort(Object[])は、今まではマージソートで実装されていました。しかし、Java 7にはパッケージプライベート宣言されているTimSortクラス(TimSort.java)が追加されており、Arrays.sort(Object[])(と関連する他のsortメソッド)はデフォルトでTimSortクラスのsortメソッドを使用するように書き換えられています。 TimSort.jav
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く