如何用C++写一个快速排序算法?

快速排序算法是一种基于交换的高效的排序算法,如何用C++写一个快速排序算法

阅读 1.7k
2 个回答
void quickSort(int *array, int left, int right)
{
    if(left < right)
    {
        int pivot = array[left];
        int low = left, high = right;
        while(low < high)
        {
            while(array[high] >= pivot && low < high)
                high--;
            array[low] = array[high];
            
            while(array[low] <= pivot && low < high)
                low++;
            array[high] = array[low];
        }
        array[low] = pivot;
        
        quickSort(array, left, low - 1);
        quickSort(array, low + 1, right);
    }
}
void QuickSort(int array[], int left, int right)
{
    int i = left;
    int j = right;
    int midValue = array[(left+right)/2];
    int temp;
    do
    {
        //找出左边第一个比基准值大的数
        while(i<right  && array[i]<midValue)
        {
            ++i;
        }
        //找出右边第一个比基准值小的数
        while(j>left && array[j]>midValue)
        {
            --j;
        }
        //上面找出的两个数交换
        if (i<=j)
        {
            temp = array[i];
            array[i] = array[j];
            array[j] = temp;
            ++i;
            j--;
        }
        //交换以后继续上述过程,再交换
    }while(i<j);
    //形成{左边小}基准值{右边大},递归,直到左右区间只有一个值
    if (j>left)
    {
        QuickSort(array, left, j);
    }
    if (i<right)
    {
        QuickSort(array, i, right);
    }

}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏