快速排序--来自维基百科

https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F

递归实现:

void swap(int *x, int *y)
{
    int t = *x;
    *x = *y;
    *y = t;
}

void quick_sort_recursive(int arr[], int start, int end)
{
    //判断跳出递归
    if (start >= end)
        return;

    int mid = arr[end];
    int left = start; int right = end - 1;

    while (left < right)
    {
        while (arr[left] < mid && left < right)
            left++;
        while (arr[right] >= mid && left < right)
            right--;

        swap(&arr[left], &arr[right]);
    }

    //判断中间值的应该交换的位置
    if (arr[left] < arr[end])
        left++;
swap(
&arr[left], &arr[end]); if (left) quick_sort_recursive(arr, start, left - 1); quick_sort_recursive(arr, left + 1, end); } void quick_sort(int arr[], int len) { quick_sort_recursive(arr, 0, len - 1); }

迭代实现:

原文地址:https://www.cnblogs.com/mingbujian/p/12468263.html