何も見ないで書いてみた(クイックソート)(2007/07/23(月) 23:55:28)

何も見ないでクイックソートを書いてみた(汗

while(i < num && array[i] < s)i++;
while(j >= 0 && array[j] >= s)j--;

の、各whileの1つ目の条件抜けてて、結構ハマった。。。。

ソース

void quickSort(int *array, int num){
  if(num < 2)return;

  int i = 0, j = num - 2, s = array[num - 1], tmp;

  while(i < j){
    while(i < num && array[i] < s)i++;
    while(j >= 0 && array[j] >= s)j--;
    if(i >= j)break;
    tmp = array[i];
    array[i] = array[j];
    array[j] = tmp;
    i++;
    j--;
  }
  array[num - 1] = array[i];
  array[i] = s;

  if(i > 1)quickSort(array, i);
  if(num - i - 1 > 1)quickSort(array + i + 1, num - i - 1);
}

参考

俺の頭の中