c++数组排序的5种方法实例代码

C++ 数组排序的 5 种方法实例代码

本篇文章介绍了使用 C++ 实现数组排序的 5 种方法,包括冒泡排序、选择排序、插入排序、希尔排序和快速排序。下面我们就分别详细阐述各种排序方法的实现。

冒泡排序

冒泡排序的基本思想是比较相邻的两个元素,如果顺序错误就交换位置。我们重复地执行这个过程,直到排序完成。示例代码如下:

void BubbleSort(int array[], int length) {
    for(int i = 0; i < length - 1; i++) {
        for(int j = 0; j < length - i - 1; j++) {
            if(array[j] > array[j + 1]) {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

选择排序

选择排序的基本思想是在未排定的部分中找到最小元素,然后将其放到已排定部分的末尾。选择排序需要不断地找到未排定部分的最小元素,但是与冒泡排序不同的是,选择排序只会在遍历完整个未排定部分之后,才会将最小元素与未排定部分的首位交换。示例代码如下:

void SelectionSort(int array[], int length) {
    for(int i = 0; i < length - 1; i++) {
        int min_index = i;
        for(int j = i + 1; j < length; j++) {
            if(array[j] < array[min_index]) {
                min_index = j;
            }
        }
        int temp = array[i];
        array[i] = array[min_index];
        array[min_index] = temp;
    }
}

插入排序

插入排序的基本思想是将未排定的元素逐个插入到已排定的部分中。要将元素插入到已排定部分中,我们需要从后往前比较已排定部分的元素,直到找到插入位置,然后将插入位置之后的元素往后移。示例代码如下:

void InsertionSort(int array[], int length) {
    for(int i = 1; i < length; i++) {
        int current = array[i];
        int j = i - 1;
        while(j >= 0 && array[j] > current) {
            array[j + 1] = array[j];
            j--;
        }
        array[j + 1] = current;
    }
}

希尔排序

希尔排序的基本思想是将数组分成若干个子序列,分别对每个子序列进行插入排序,然后依次逐步缩小子序列的范围,直到最后整个序列变为有序。示例代码如下:

void ShellSort(int array[], int length) {
    // 选取一个合适的增量
    for(int gap = length / 2; gap > 0; gap /= 2) {
        // 对子序列分别进行插入排序
        for(int i = gap; i < length; i++) {
            int temp = array[i];
            int j = i;
            while(j >= gap && array[j - gap] > temp) {
                array[j] = array[j - gap];
                j -= gap;
            }
            array[j] = temp;
        }
    }
}

快速排序

快速排序的基本思想是选择一个基准元素,将数组分成两个部分,小于基准元素的元素和大于基准元素的元素,然后对这两个部分分别进行快速排序。示例代码如下:

void QuickSort(int array[], int left, int right) {
    if(left < right) {
        int pivot = array[left];
        int i = left;
        int j = right;
        while(i < j) {
            while(i < j && array[j] >= pivot) {
                j--;
            }
            array[i] = array[j];
            while(i < j && array[i] <= pivot) {
                i++;
            }
            array[j] = array[i];
        }
        array[i] = pivot;
        QuickSort(array, left, i - 1);
        QuickSort(array, i + 1, right);
    }
}

以上就是使用 C++ 实现数组排序的 5 种方法的详细实现过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++数组排序的5种方法实例代码 - Python技术站

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

相关文章

  • C++详细讲解图的拓扑排序

    C++详细讲解图的拓扑排序 什么是拓扑排序 拓扑排序是对于有向无环图(Directed Acyclic Graph)的一种排序,其输出结果为图中每个节点的线性先后序列,满足如果存在一条从节点 A 到节点 B 的路径,则在序列中节点 A 出现在节点 B 的前面。 什么是有向无环图(DAG) 有向无环图是不包含环路并且有一个或多个源点和汇点的有向图。其中源点指没…

    算法与数据结构 2023年5月19日
    00
  • C语言实现交换排序算法(冒泡,快速排序)的示例代码

    C语言实现交换排序算法(冒泡排序、快速排序)通常分为以下步骤: 分析算法:首先,我们需要对选定的排序算法进行仔细的分析,了解排序过程中的基本操作、时间复杂度和空间复杂度等基本信息。 编写函数:依照分析结果,编写函数实现排序算法。同时,考虑如何优化代码以提高排序效率。 测试函数:编写测试代码对排序函数进行测试,检查是否正确。 以下是两个示例说明: 冒泡排序 冒…

    算法与数据结构 2023年5月19日
    00
  • C#实现的二维数组排序算法示例

    接下来我将为大家详细讲解“C#实现的二维数组排序算法示例”的完整攻略。 什么是二维数组排序算法? 二维数组是一种常见的数据结构,是一个表格状(行列)的数组。而排序算法则是把一组无序的数据按照规定的排序方式进行排列的算法。二维数组排序算法是在二维数组基础上进行排序操作的算法。 C#实现二维数组排序算法示例 下面我们来看看如何用C#实现二维数组排序算法的示例: …

    算法与数据结构 2023年5月19日
    00
  • 解析左右值无限分类的实现算法

    下面为你详细讲解“解析左右值无限分类的实现算法”的完整攻略: 1. 了解左右值无限分类 左右值无限分类,也称为嵌套集合模型,是一种常见的无限分类方式。在该模型中,每个分类都有一个左值和右值,通过比较左右值大小,可以判断出一个分类是否是另一个分类的子分类或者父分类。支持多层级分类,可以无限嵌套。 2. 左右值无限分类的实现算法 左右值无限分类的实现算法分为两步…

    算法与数据结构 2023年5月19日
    00
  • php数组冒泡排序算法实例

    让我们来详细讲解一下“PHP 数组冒泡排序算法实例”。 什么是冒泡排序? 冒泡排序算法是一种基于比较的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,如果它们的顺序错误,就将它们交换位置。这个过程直接比较相邻元素,每一轮都将最小的元素放到序列的开头,就像气泡不断上升一样,因此得名冒泡排序。 基本的冒泡排序实现方法 下面是一个基本的实现方法,用 PHP…

    算法与数据结构 2023年5月19日
    00
  • C++ 实现桶排序的示例代码

    下面是一份详细的攻略,带有示例说明。 桶排序简介 桶排序是一种基于计数的排序算法。它将一些数据分到不同的桶里,再对每个桶中的数据进行排序,最后按照桶的顺序依次输出所有数据,即可得到排好序的序列。 桶排序的时间复杂度是 $O(n)$,空间复杂度也是 $O(n)$,适用于元素值分布比较均匀的数据。 C++ 桶排序示例 下面是一份 C++ 实现桶排序的示例代码: …

    算法与数据结构 2023年5月19日
    00
  • PHP有序表查找之二分查找(折半查找)算法示例

    下面我将对“PHP有序表查找之二分查找(折半查找)算法示例”的完整攻略进行详细讲解。 一、什么是二分查找 二分查找又称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。基本思想是:将有序数组分成两部分,如果要查找的元素比数组中间的元素小,则在左半部分继续查找;如果要查找的元素比数组中间的元素大,则在右半部分继续查找,直到找到或者查找结束。 二分查找算…

    算法与数据结构 2023年5月19日
    00
  • php实现归并排序算法的方法详解

    PHP实现归并排序算法的方法详解 归并排序算法简介 归并排序是一种使用分治法思想的高效稳定排序算法。其基本思想是将待排序的序列拆分成若干个子序列,对每个子序列进行排序,然后将排序后的子序列合并成一个大的有序序列。 归并排序算法的复杂度为O(nlogn),适用于各种数据规模的排序。 归并排序算法步骤 将序列递归拆分成若干个子序列。 对每个子序列进行递归排序。 …

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