クイックソート・サンプル

ソース

function QuickSortForDataFle(array,first,last, OrderKey, Order) {

  var point, f, l, tmp;
  f = first;
  l = last;

  point = array[first]; //ピボットを決定

  while(first < last) {
    while((array[last] >= point) && (first < last)) {
       last--;
    }
    if(first != last) {
       array[first] = array[last];
       first++;
    }
    while((array[first] <= point) && (first < last)) {
       first++;
    }
    if(first != last) {
       array[last] = array[first];
       last--;v     }
  }
  tmp = array[f];
  array[first] = point;
  point = first;
  first = f;
  last = l;

  if(first < point) {
     QuickSortForDataFle(array,first,point-1, 0, 0);
  }v   if(last > point) {
     QuickSortForDataFle(array,point+1,last, 0, 0);
  }
}

//クイックソートの本体
function quickSort(array,array_size){
   QuickSortForDataFle(array,0,array_size-1, 0, 0);v }v //ここから開始
var h=[6,3,8,4,5,1,2,9,7,0];
document.write("ソート前:");v for(var i=0;i < h.length;i++)
{
  document.write(h[i]+" ");
}
document.write("
");
//クイックソート
quickSort(h,h.length);
document.write("ソート後:");
for(var i=0;i < h.length;i++)
{
  document.write(h[i]+" ");
}