C++关于快速排序示例

注我,一起成长,一起变强。

1.快速排序主要思想

快速排序是一种常用的排序算法,其主要思想是选择一个基准值,将数组分割成两部分,左边的部分都比基准值小,右边的部分都比基准值大,然后对左右两部分分别进行递归排序,最终实现整个数组的排序。

快速排序的主要步骤:

  • • 1.选择基准值

    • • 从数组中选择一个基准值,通常是数组中的第一个元素、最后一个元素或者中间的元素。

  • • 2.分割

    • • 将数组中小于基准值的元素放在左边,大于基准值的元素放在右边,基准值处于最终排序位置的中间。

  • • 3.递归排序

    • • 对基准值左右两部分的子数组分别递归进行快速排序。

  • • 4.合并

    • • 不需要合并步骤,因为在分割的过程中,子数组的顺序会得到维护。

2.C++示例

void SortTest::quickSort(int *p,const int start, const int end) {

    if (start < end) {
        int pivot = p[end];
        int i = start - 1;

        for (int j = start; j < end  ; ++j) {

            if (p[j] <= pivot) {
                ++i;
                std::swap(p[i], p[j]);
            }
        }
        std::swap(p[+ 1], p[end]);
        int pivotIndex = i + 1;//分区并获取枢纽索引

        quickSort(p, 0, pivotIndex - 1);//对枢纽左侧的子数组进行快速排序
        quickSort(p, pivotIndex + 1, end);//对枢纽右侧的子数组进行快速排序
    }
}

调用如下


void SortTest::test() {
    const int KLenOfArray = 11;
    int p[KLenOfArray] = { 10, 6, 12, 5, 1, 8, 11, 32, 1, 21, 3 };
    int q[KLenOfArray];
    memset(q, 0, sizeof(int) * KLenOfArray);
    memcpy(q, p, sizeof(int) * KLenOfArray);
    std::cout<<"quickSort快速排序后为"<<endl;
    quickSort(q, 0, KLenOfArray - 1);
    showArray(q, KLenOfArray);
}

3.效果

quickSort快速排序后为
arraylist infommation:1,1,3,5,6,8,10,11,12,21,32,

4.小结

此文看下C++文章的排版及风格,后面可能会添加C++方向的笔记,不喜勿喷。


原文始发于微信公众号(客户端全栈技术养成记):C++关于快速排序示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/290169.html

(0)
码上实战的头像码上实战

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!