快速排序

#快速排序

  • 快速排序的思想就是,对轴,轴的左边比轴小,轴的右边比轴大,轴则处于最终排序位置
  • 利用递归思想,将左轴和右轴分组,并继续对轴
  • 最后完成排序
  • 左边定low,右边定high,一般定low所指元素为轴
  • 定low为轴后,先找high方向比轴小的,将之赋给arr.low
  • 再找low方向比轴大的,将之赋给arr.high
  • 然后循环直至low>=high,此时 low所指即轴的最终排序位置
  • 然后开始递归,左轴,右轴,排序完毕
  • #代码实现

    int QulicSort_1(int arr[],int low,int high)

    {

    int pivot = arr[low];

    while (low < high)

    {

    while (low < high && arr[high] >= pivot)

    high--;

    arr[low] = arr[high];

    while (low < high && arr[low] <= pivot)

    low++;

    arr[high] = arr[low];

    }

    arr[low] = high;

    return low;

    }

    void QulicSort(int arr[], int low,int high)

    {

    if (low > high)

    return;

    int middle=0;

    middle = QulicSort_1(arr, low, high);

    QulicSort(arr, low, middle - 1);

    QulicSort(arr, middle + 1, high);

    }