選択ソートをJavascriptで実装してみたいと思います。
コメントである程度の細かな処理はわかると思いますが、ポイントは、評価番号よりも後の配列から最小値を取得する過程が2重ループになっていて、スタート値を変えて、評価済みの数値を固定化している所がミソです。
javascriptは、配列を柔軟なobjectに切り替えたり連動させたりできるので、数値に対して、色々なプロパティを付属させて便利にデータベースとして使うことも可能ですね。
この場合、気をつけなければ行けないのは、同一の数値があった場合に、数値順番で早い順が先頭にくる仕様なので、プロパティ評価が必要になる場合は、別途仕組みを足す必要があります。
ソースコード
function selectSort(numbers){
//数値配列を最初から順番に評価していく
for(var i=0; i<numbers.length-1; i++){
//最小値の格納変数(最初は評価対象数値を入れておく)
var min = numbers[i];
//入れ替え対象番号用変数
var num = i;
//評価番以降の一番低い数値を取得
for(var j=num+1; j<numbers.length; j++){
if(min > numbers[j]){
num = j;
min = numbers[j]
}
}
//評価番号と入れ替え番号が同じ場合は入れ替えなしとして処理無し
if(num == i){continue}
//評価番号と入れ替え番号の値を入れ替える
numbers[num] = numbers[i];
numbers[i] = min;
}
return numbers;
}
実行
selectSort([10,2,12,7,16,8,13]);
>> [2, 7, 8, 10, 12, 13, 16]
非常にさっくりできたので、一安心です。
あまり言語独自の仕様を入れていないので、多言語でも展開が楽にできそうです。
関連リンク
いろいろなプログラム言語でアルゴリズム学習
0 件のコメント:
コメントを投稿