<集大成>アルゴリズム大辞典 at TECH
[2ch|▼Menu]
402:デフォルトの名無しさん
08/06/04 11:13:39
>>401
いかにもオリジナル的な書き方になったのはすみませんが、それは知っていました。
ついでにちょっと改良したやつを。
コムソートの部分をシェーカーソート風にすると、より良いです。(オリジナルではないです)
シェーカーソートはバブルソートを双方向から行います。

シンプルさが売りなのにちょっとゴチャついてるので、本当はシェーカーソートは外したいんですけどね。(つづく)

void sort(int[] data) {
  for (int h = data.length * 10 / 13; h >= 17; h = h * 10 / 13) {
    for (int i = h; i < data.length; i++)
      if (data[i-h] < data[i])
        swap(data, i-h, i);
    h = h * 10 / 13;
    if (h < 17) break;
    for (int i = data.length - 1; i >= h; i--)
      if (data[i-h] < data[i])
        swap(data, i-h, i);
  }
  for (int i = 1; i < data.length; i++) {
    int w = data[i], j = i;
    for (j = i; j > 0 && data[j-1] < w; j--)
      data[j] = data[j-1];
    data[j] = w;
  }
}

void swap(int[] a, int i, int j) {
  int w = a[i];
  a[i] = a[j];
  a[j] = w;
}


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4390日前に更新/131 KB
担当:undef