環境は Debian wheezy 7.5 ですがLinuxなら大抵問題ないかと。 追記: 最後におまけつきます。「超一瞬版」は「超一瞬で不要ということが分かった版」に変わりました。 (勝手に改行入れてます) $ uname -a Linux hostname 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3 x86_64 GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.5 (wheezy) Release: 7.5 Codename: wheezy $ ls -l | sort -k 5 ...(省略しまして)... -rwxr-xr-x 1 dmiyakawa dmiyakawa 1853
Sort-Object コマンドレットを使用すると、表示データを見やすく整理できます。 Sort-Object では、並べ替え条件としてプロパティ名 (複数可) を指定すると、そのプロパティ値で並べ替えられたデータが返されます。 基本的な並べ替え 現在のディレクトリ内のサブディレクトリとファイルを一覧表示する問題について考えます。 LastWriteTime で並べ替えた後、Name で並べ替えるには、次のように入力します。 Get-ChildItem | Sort-Object -Property LastWriteTime, Name | Format-Table -Property LastWriteTime, Name LastWriteTime Name ------------- ---- 11/6/2017 10:10:11 AM .localization-config 1
sort -> Array[permalink][rdoc][edit] sort! -> self sort {|a, b| ... } -> Array sort! {|a, b| ... } -> self 配列の内容をソートします。要素同士の比較は <=> 演算子を使って行います。sort はソートされた配列を生成して返します。 sort! は self を破壊的にソートし、self を返します。 ブロックとともに呼び出された時には、要素同士の比較をブロックを用いて行います。ブロックに2つの要素を引数として与えて評価し、その結果で比較します。ブロックは <=> 演算子と同様に整数を返すことが期待されています。つまり、ブロックは第1引数が大きいなら正の整数、両者が等しいなら0、そして第1引数の方が小さいなら負の整数を返さなければいけません。両者を比較できない時は nil を返します。
先日領収書の束やその他の書類を日付順に分類していたのだが、書類ソーターの類を使わずにソートしていたところ小分けの山がたくさんできあがってしまい、しまいにはどの山が何だったか分からなくなってしまった。 ふとコンピュータサイエンスの授業で習ったソートアルゴリズムを使えばいいのではと思い立ち、紙の山をすべて元に戻し基数ソートをかけたところすんなりと作業を終えることができた。その後別の作業でクイックソートやマージソートも試すことができた。 そこで質問なのだが/.erの皆は物理的にソートする際どんなアルゴリズムを使っているだろうか?
HadoopのReduceに渡されるのはキーと値のリストだが、このとき値のリストに含まれる各アイテム(値そのもの)はソートされていない。ソートされていて欲しい場合にはセカンダリソートと呼ばれるテクニックを使うのが定石とされているが、これは実装の面でも概念的な面でもバッドノウハウ的な側面がある。Hadoopには「キーをソートする」機能は実装されている。そこで、値をキーに入れてしまい、このHadoopに備わっている「キーをソートする」機能によって、実質的に値をソートしようというわけだ。 Map/Reduceというのはキーごとにデータを分割して処理する方法なので、「キーに値が入ったら分割がおかしくなるんじゃ?」と思うのは当然である。キーに値が入っていても、分割に影響しないよう、Partitioningクラスを自分で拡張し、分割の基準となる値(本来のキー)には、値の影響が出ないようにするのだ。それ
分布数え上げソートはキーの重複に対応しているといいました。キーが重複しているのは 3 です。整列後のふたつの 3 の位置(配列のインデックス)は 「Y - X」 と 「Y - 1」 で計算できます。この例だと「3 - 2 = 1」と「3 - 1 = 2」になります。 実際のプログラミングでは重複したキーの位置の計算は、作業用配列Bにコピーする時に(手順4で)配列Aの後ろから前へコピーしていくことで簡単に実装できます。 図解 特徴 バケットソートと同じくソート対象のデータがとりうる値の範囲をあらかじめわかっていなければなりません。作業領域もキーの個数を数えるための領域と結果を格納する領域が必要になります。あまりに大きな範囲のデータを取り扱うには RAM などに限度があるので物理的に不可能になります。しかし大きな作業領域と引き換えにデータの大小を比較しなくてよいので高速な整列処理を実現できます
ストゥージソート(英: Stooge sort)は、再帰を用いたソートアルゴリズムのひとつである。 計算時間はO(nlog 3 / log 1.5 ) = O(n2.7095...)であり、これはマージソートなどの効率的なアルゴリズムよりも、それどころか非常に効率の悪い単純なソートの例としてよく挙げられるバブルソートよりも遅い。 アルゴリズムは以下の通りである。 もし末尾の値が先頭の値より小さければ、それらを入れ替える。 現在処理している部分列の要素数が3以上であれば、 リストの先頭2/3[1]に対してストゥージソートを行う。 リストの末尾2/3[1]に対してストゥージソートを行う。 リストの先頭2/3[1]に対して再びストゥージソートを行う。 そうでなければ終了。 実装[編集] algorithm stoogesort(array L, i = 0, j = length(L)-1) i
そんなんやってみればいいじゃん。 Perlのスクリプティングホストの種類とか バージョンによっても違うんじゃない? こうはなったけども . .. 02jXVhQo.C 06B3babN.6 098hSVk6.Z 0A4jAI0d.h 0ckAL0nN.I 0Gh8YPdf.B 0jhFZM1W.M 0kR3589m.P 0NIVBe1e.M 0Thk4emT.a 1.c 10PHP4kW.W 11cUYISZ.Y 17UlecTe.l 19Fg1eLd.o 1dCkN4RD.f 1fJDifWh.0 1fNkP1Ho.B 1glmH3DV.4 1Gpf0WiM.N 1HhVoZIL.l 1IchCFjl.B 1INVG2b7.T 1iSPnQ6d.c 1K6dCXdb.3 1NgbaMa8.a 1odMNBB8.l 1Oi5XfIW.A 1OJUOpNj.D 1oLgcFbI.6 1P3R
public void sort(int[] a){ // バケツに入っているデータ数を覚えるための配列です int[] bn=new int[bucket.length]; // 最下位桁の数字を見て、対応するバケツにデータを入れます。 for(int i=0;i<a.length;i++){ bucket[a[i]%m].add(new Integer(a[i])); notifier.notify(i,-1); } // 最初のバケツから順番にデータを取りだし、データの指定桁の値を見て、 // 対応するバケツにデータを追加します。 for(int j=1;j<k;j++){ // 現在、それぞれのバケツに何個のデータが入っているかを // 覚えておきます。 for(int b=0;b<bucket.length;b++) bn[b]=bucket[b].num; // 各バケツの先頭
TwitterのTLで知ったのだが、少し前に海外の掲示板で"sleep sort"というソートアルゴリズムが発明され、公開されたようだ。このアルゴリズムが面白かったので紹介してみる。 Genius sorting algorithm: Sleep sort 1 Name: Anonymous : 2011-01-20 12:22 諸君!オレは天才かもしれない。このソートアルゴリズムをみてくれ。こいつをどう思う? #!/bin/bash function f() { sleep "$1" echo "$1" } while [ -n "$1" ] do f "$1" & shift done wait example usage: ./sleepsort.bash 5 3 6 3 6 3 1 4 7 2 Name: Anonymous : 2011-01-20 12:27 >>1 なん…だと
基数ソート(きすうソート、英: radix sort)は、「比較によらないソート」[1]のアルゴリズムの一つで、位取り記数法で表現可能な対象について、下の桁から順番にソートしてゆき、最後に最上位桁でソートすると、全体が順序通りに並ぶ、という手法である。 nをデータの数、kを桁数として、計算量のオーダーはO(nk)である。また、アルゴリズム自身の性質により、素直な実装が安定ソートになる。[2] 前提条件[編集] このアルゴリズムは、データの種類が有限で、最大値・最小値がはっきりしているという仮定を置いており、全ての入力データが「3桁の整数」や「2文字のアルファベット」など決まった形式であることが分かっていなければならない。なおそれに加え、ある値のデータが必ず一つしか現れないとか、同じ値のデータは同一のものとしてしまって良い、といった場合には、もはやソートするのではなく、単純に、全体が入る大き
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く