C++实现快速排序(Quicksort)算法

C++实现快速排序(Quicksort)算法

快速排序(Quicksort)算法是一种常见的排序算法,具有快速、高效、稳定性好等特点,广泛应用于各种工程实践中。

快速排序的基本思想

快速排序的基本思想是:选取一个基准值(pivot),将待排序序列划分成左右两个子序列,左边的子序列中所有元素都不大于基准值,右边的子序列中所有元素都不小于基准值,然后对左右两个子序列进行递归排序,最终得到有序序列。

C++实现快速排序算法

下面是C++实现快速排序算法的完整代码:

#include <iostream>
#include <vector>

using namespace std;

int partition(vector<int>& nums, int left, int right) {
    int pivot = nums[right];
    int i = left - 1;
    for (int j = left; j < right; j++) {
        if (nums[j] <= pivot) {
            i++;
            swap(nums[i], nums[j]);
        }
    }
    swap(nums[i+1], nums[right]);
    return i+1;
}

void quicksort(vector<int>& nums, int left, int right) {
    if (left < right) {
        int p = partition(nums, left, right);
        quicksort(nums, left, p-1);
        quicksort(nums, p+1, right);
    }
}

void print(vector<int>& nums) {
    for (auto num : nums)
        cout << num << " ";
    cout << endl;
}

int main() {
    vector<int> nums = {3, 9, 4, 2, 5, 1, 7, 6, 8};
    quicksort(nums, 0, nums.size()-1);
    print(nums);

    return 0;
}

上面的代码实现了快速排序算法的核心部分:partition函数和quicksort函数。其中,partition函数是划分函数,用来将待排序序列划分成左右两个子序列;quicksort函数是递归排序函数,用来对左右两个子序列进行递归排序。

示例说明

下面给出两个示例来说明快速排序算法的实现过程。

示例1:

原始序列:[3, 9, 4, 2, 5, 1, 7, 6, 8]

第一次划分结果:[3, 4, 2, 1, 6, 8, 9, 7, 5]

第二次划分结果:[1, 2, 3, 4, 6, 8, 9, 7, 5]

第三次划分结果:[1, 2, 3, 4, 5, 6, 8, 9, 7]

第四次划分结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

经过四次划分后得到有序序列。可以看到,快速排序算法具有快速、高效、稳定性好等特点。

示例2:

原始序列:[2, 1, 4, 3, 6, 5, 8, 7, 9]

第一次划分结果:[1, 2, 3, 4, 6, 5, 8, 7, 9]

第二次划分结果:[1, 2, 3, 4, 6, 5, 8, 7, 9]

第三次划分结果:[1, 2, 3, 4, 5, 6, 8, 7, 9]

第四次划分结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

经过四次划分后得到有序序列。可以看到,快速排序算法对于不同的数据集都具有高效的排序能力。

总结

快速排序算法是一种经典的排序算法,实现简单,运行速度快,效率高,是大多数应用领域中使用最广的排序算法之一。对于快速排序算法的实现过程有了深刻的理解,可以为我们在实践中使用快速排序算法提供有力的支持。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现快速排序(Quicksort)算法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 2020年新浪最新PHP试题和答案解析

    2020年新浪最新PHP试题和答案解析攻略 作为新浪最新的PHP试题,本门考试难度较高。以下是一些考试攻略以及答案解析。 试题分析 本次试题由多道选择题和编程题组成,主要考察PHP语言基础、框架使用、数据库操作等方面的知识。 选择题 本次选择题共15道,主要考察PHP基础语法、函数使用、面向对象编程、异常处理等方面的知识。 编程题 本次编程题共2道,主要考察…

    算法与数据结构 2023年5月19日
    00
  • C语言超详细梳理排序算法的使用

    C语言超详细梳理排序算法的使用 概述 本攻略旨在介绍C语言中常见的排序算法的实现与使用方法。排序算法是计算机科学中非常重要的一部分,它们可以对大量的数据进行快速的排序,是各类计算机系统与应用中的重要组成部分,对于编写具有高效性能的代码具有非常重要的作用。对于初学者,学习排序算法不仅可以提高编程能力,同时也是学习算法与数据结构的入门之路。 本文介绍以下常见的排…

    算法与数据结构 2023年5月19日
    00
  • PHP排序算法系列之直接选择排序详解

    PHP排序算法系列之直接选择排序详解 一、前言 本文将详细讲解直接选择排序,直接选择排序是一个简单但常用的排序算法,对初学者来说是个很好的入门算法,代码也比较易懂。 二、算法原理 直接选择排序,是一种比较简单直观的排序算法。其基本思想为:将待排序的序列划分为已排序和未排序两部分,从未排序的序列中选择最小的元素,将其插入已排序序列的末尾,直到所有元素均排序完毕…

    算法与数据结构 2023年5月19日
    00
  • PHP常见数组排序方法小结

    PHP常见数组排序方法小结 PHP的数组是一种非常有用的数据结构。当我们需要对数组进行排序时,PHP提供了许多常见的排序方法,包括冒泡排序、选择排序、插入排序、快速排序等,本文将对这些排序方法进行简要介绍和示例说明。 冒泡排序 冒泡排序是一种常见的排序方法,它的基本思想是:对相邻的元素进行比较,如果顺序不正确就交换。这个过程会持续到整个数组都有序为止。 fu…

    算法与数据结构 2023年5月19日
    00
  • Java排序之冒泡排序的实现与优化

    Java排序之冒泡排序的实现与优化 冒泡排序基本原理 冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻的元素,将较大的数交换到右边,较小的数交换到左边。这样每一轮交换后,未排序的数列中的最大元素就被移动到了最右边,因此被称为“冒泡排序”。 基本算法实现 下面是基本的冒泡排序算法实现: public static void bubbleSort(int[…

    算法与数据结构 2023年5月19日
    00
  • php实现的常见排序算法汇总

    PHP实现的常见排序算法汇总 本文主要介绍几种PHP实现常见排序算法的方法,帮助读者快速了解和使用这些排序算法。 排序算法是计算机编程领域中非常重要的基础算法之一,可以用于对数据进行排序,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序等,本文将介绍其中的三种算法。 冒泡排序 冒泡排序是一种简单直观的排序算法,通过比较相邻元素的大小,将较大的元素逐个…

    算法与数据结构 2023年5月19日
    00
  • 手把手教你搞懂冒泡排序和选择排序

    手把手教你搞懂冒泡排序和选择排序 冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换的数据为止。 算法流程 比较相邻的元素。如果当前的元素大于下一个元素,则交换它们的位置。 对每一对相邻元素都执行步骤 1,从开始第一对到…

    算法与数据结构 2023年5月19日
    00
  • C语言实现九大排序算法的实例代码

    下面我会给您讲解如何实现九大排序算法的实例代码。 1. 排序算法简介 排序算法是计算机科学中重要的算法之一,是将元素按照一定规则进行排列的过程。常见的排序算法包括:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、计数排序和基数排序。 2. 实现九大排序算法的步骤 以下是九大排序算法的实现步骤: 冒泡排序:依次比较相邻的两个元素,将大的向后…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部