美文网首页
快排c++实现

快排c++实现

作者: yshi2017 | 来源:发表于2020-12-16 10:27 被阅读0次

```

    hello

```

int div_sub_arr(int arr[], int left, int right)

{

    // 将arr[left]作为基准

    int i = left + 1;

    int j = right;

    int temp = arr[left];

    while (i <= j)

    {

        // 从左边部分找到大于基准的元素

        while (arr[i] < temp)

        {

            i++;

        }

        // 从右边部分找到小于基准的元素

        while (arr[j] > temp)

        {

            j--;

        }

        // 两个元素交换位置,同时分别向左向右移动i和j

        if (i < j)

            std::swap(arr[i++], arr[j--]);

        else i++;

}

// 移动基准到正确位置

std::swap(arr[j], arr[left]);

// 返回基准的index,这个index将原本的arr[]分割成两个部分

return j;

}

void quick_sort(int arr[], int left, int right)

{

    if (left > right)

        return;

    // 分割arr,分隔元素index为j

    int j = div_sub_arr(arr, left, right);

    // 以j为分隔线递归分割后的两个子数组

    quick_sort(arr, left, j - 1);

    quick_sort(arr, j + 1, right);

}

```

测试:

```

int main()

{

    int iCount = 6;

    int arr[] = {1, 3, 2, 6, 5, 4};

    for (int i = 0; i < iCount; ++i)

    {

    std::cout << arr[i] << "\t";

    }

    std::cout << std::endl;

    std::cout << "--------------------------------------------" << std::endl;

    quick_sort(arr, 0, iCount - 1);

    for (int i = 0; i < iCount; ++i)

    {

        std::cout << arr[i] << "\t";

    }

    std::cout << std::endl;

    return 0;

}

```

相关文章

  • 快排c++实现

    ``` hello ``` int div_sub_arr(int arr[], int left, int ri...

  • 标准的C++实现快排

    以下这样写法的编程框架要清晰很多,可以当标准解法来用。

  • Sort函数

    目的:通过了解Sort函数的实现过程,复习学过的快排,堆排,插入排序。 Sort函数是C++自带的库函数。需要头文...

  • 快速排序算法

    引言 快速排序是应用最广泛的排序算法(C++中的sort函数内部就是快排),优点是实现简单,速度快(时间复杂度Nl...

  • 转载:快排实现

    快速排序(Quicksort) 基本思想:(分治) 先从数列中取出一个数作为key值; 将比这个数小的数全部放在它...

  • js实现快排

    function quick_sort(list, start, end) {if (start < end) {...

  • 快排递归实现

    基本思想:(分治) 先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它...

  • 快排Java实现

    1、快排的核心思想: 1、从无序的数组中找到一个枢轴元素M,将数组一分为二:如将数组的第一个元素设置为枢轴元素。2...

  • Javascript和快速排序

    Javascript和快速排序 这里以递归为例,参考自慕课网刘波波老师的C++版本实现 普通快排 上过大学数据结构...

  • 2020-11-30面试

    c++多态(虚表)限流算法?排序(快排如何加快)红黑树进程线程(协程)进程切换如何实现硬中断/软中断?智能指针I/...

网友评论

      本文标题:快排c++实现

      本文链接:https://www.haomeiwen.com/subject/sorngktx.html