首页 > 编程语言 > 详细

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

时间:2020-03-12 13:27:20      阅读:94      评论:0      收藏:0      [点我收藏+]

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])
        swap(&arr[left], &arr[end]);
    else
    {
        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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!