快速排序

 

int Partition(int array[], int low, int high)
{
 // 採用子序列的第一個元素爲樞紐元素
 int pivot = array[low];
 while (low < high)
 {
  // 從後往前在後半部分中尋找第一個小於樞紐元素的元素
  while (low < high && array[high] >= pivot)
  {
   high--;
  }
  // 將這個比樞紐元素小的元素交換到前半部分
  Swap(&array[low], &array[high]);

  // 從前往後在前半部分中尋找第一個大於樞紐元素的元素
  while (low < high && array[low] <= pivot)
  {
   low++;
  }
  // 將這個比樞紐元素大的元素交換到後半部分
  Swap(&array[low], &array[high]);
 }
 // 返回樞紐元素所在的位置
 return low;
}

// 快速排序
void QuickSort(int array[], int low, int high)
{
 if (low < high)
 {
  int n = Partition(array, low, high);
  QuickSort(array, low, n);
  QuickSort(array, n + 1, high);
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章