配列内のデータをソートする(クイックソート)
説明
ソート方法の1つにクイックソートがあります。クイックソートはデータ中からキーとなる値を抜き出し、再帰を使って分割、ソートします。
サンプルプログラム
var data = new Array(30, 10, -5, 99, 44, 65, 10, 31, 1, -57, 89, 78);
function sortData(data,start,end) {
var x = data[Math.floor((start + end) / 2)];
var i = start;
var j = end;
while (true) {
while (data[i] < x) i++;
while (x < data[j]) j--;
if (i >= j) break;
var n = data[i];
data[i] = data[j];
data[j] = n;
i++;
j--;
}
if (start < i-1) sortData(data,start,i-1);
if (j+1 < end) sortData(data,j+1,end);
}
document.write("ソート前:"+data.toString()+"<br>");
sortData(data,0,data.length-1);
document.write("ソート後:"+data.toString()+"<br>");