新JavaScript例文辞典

配列内のデータをソートする(バケットソート)

説明

ソート方法の1つにバケットソートがあります。値の範囲が決まっていて整数値である場合、値をキーにしてバケット(配列など値を入れるもの)に代入していきます。最後に代入したデータを取り出せばソートが終了となります。サンプルでは0から100までの値を昇順にソートしています。

サンプルプログラム

var data = new Array(30, 10, 5, 99, 44, 65, 10, 31, 1, 57, 88, 78);
function sortData(data) {
var data2= new Array();
var max = 100; // 最大値(0〜100までの範囲)
for (var i=0; i<max; i++) data2[i] = 0;
for (i=0; i<data.length; i++) {
var n = data[i];
data2[n]++;
}
var count = 0;
for (i=0; i<max; i++) {
if (data2[i] > 0) {
for (var j=0; j<data2[i]; j++) {
data[count] = i;
count++;
}
}
}
}
document.write("ソート前:"+data.toString()+"<br>");
sortData(data);
document.write("ソート後:"+data.toString()+"<br>");
サンプルを実行
[戻る]