そういえば、java以外でまともにソートのアルゴリズム作ったことないやということで今回はjavascriptで文字列または数値のソート方法を
自分用に書いていきたいと思います。まず、通常の文字列をソートするときはこんな感じでコードを書きます。(うろ覚えですが)
var str = ['c', 'java', 'php', 'ruby']; str.sort(); console.log(str);
↓実行例
短いですが、こんな短文で文字列ならば簡単にソートをすることができます。リストとかをアルファベット順に揃えて出したいという時に
使えるメソッドですね。では数値でも同じように検索できるのでは?と思うのですが、ただ数値を検索対象にしただけでは正常に働いては
くれないです。
var num = [6, 20, 50, 36, 5]; num.sort(); console.log(num);
↓実行例
これだと、sort関数がnum配列を文字列と認識してしまうため、一番前の数値の若い順にソートされてしまい数値の小さい順に並べたいと
いう意図には適いません。という訳で、正しい順番で数値をソートするには、この比較関数を使う必要があります。実装方法はシンプル
で、どのブラウザでも差異無く動かすことができます。比較方法は次の通りです。
function compareFunc(a, b) { return a - b; } var num = [6, 20, 50, 36, 5]; num.sort(compareFunc); console.log(num);
↓実行例
このメソッドでは、compareFunc内でreturnした引数の差の値で決めています。例えば、引数が6と20だった場合は差分が-14なので、負の
値とみなされここではソートされずに次の値を比較していく仕組みになっています。反対に正の値として判定された場合、ここでは6と5を
比較した場合はソートされ順番が入れ替わります。これを配列文繰り返すことにより正しい数値の順番にソートが出来るという訳です。
javaだとアルゴリズム書くのがめんどくさかったのですが、もしかしたら自分が知らないだけでこのsort関数みたいな簡単なメソッドが
用意されているのだろうか?だとしたら勉強不足です・・・