qsort

int Partition(int* array, int low, int high) {
  int pivot = array[low];

  while (low < high) {
    while (low < high && array[high] >= pivot) {
      --high;
    }
    array[low] = array[high];

    while (low < high && array[low] <= pivot) {
      ++low;
    }
    array[high] = array[low];
  }
  array[low] = pivot;
  return low;
}

void qsort(int* array, int low, int high) {
  if (low < high) {
    int pivot_position = Partition(array, low, high);
    qsort(array, low, pivot_position - 1);
    qsort(array, pivot_position + 1, high);
  }
}

int _tmain(int argc, _TCHAR* argv[]) {
  int arr[] = { 1, 5, 3, 1, 4 }; 
  qsort(arr, 0, 4);
  return 0;
}

 

posted @ 2013-11-01 23:10  avexer  阅读(184)  评论(0编辑  收藏  举报