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日

相关文章

  • JS实现的数组全排列输出算法

    JS实现的数组全排列输出算法,一般使用递归实现,具体步骤如下: 步骤一:编写递归函数 首先我们需要定义一个递归函数 permutation,它的输入参数为两个数组: function permutation(arr, result = []) { // … } 其中,arr 是待排列的数组,result 是排列结果。注意,result 是一个可选参数,第…

    算法与数据结构 2023年5月19日
    00
  • JavaScript实现经典排序算法之冒泡排序

    JavaScript实现经典排序算法之冒泡排序 什么是冒泡排序? 冒泡排序是一种简单的排序算法,从序列左侧开始比较两个相邻的元素,如果顺序不对就交换位置,直到序列末尾,这样一次遍历后,序列最后一个元素就是当前序列最大值。然后对剩余序列重复上述过程,直到整个序列有序。 算法实现 我们来看看如何用JavaScript实现冒泡排序。 function bubble…

    算法与数据结构 2023年5月19日
    00
  • C/C++实现快速排序算法的思路及原理解析

    C/C++实现快速排序算法的思路及原理解析 快速排序算法是一种高效的排序算法,它的平均时间复杂度是 O(nlogn),最坏情况下的时间复杂度是 O(n^2)。快速排序算法的核心思想是分治法,通过不断将原问题分解成规模更小的子问题来实现排序。本文将详细讲解 C/C++ 实现快速排序算法的思路及原理解析,包括实现过程和两个示例说明。 快速排序算法实现原理 快速排…

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

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

    算法与数据结构 2023年5月19日
    00
  • JS实现数组随机排序的三种方法详解

    JS实现数组随机排序的三种方法详解 在JavaScript中,实现数组的随机排序是十分常见的需求。本篇文章将讲解三种实现数组随机排序的方法。 方法一:Fisher-Yates算法 Fisher-Yates算法(也被称为 Knuth算法)是实现数组随机排序最常用的算法之一。该算法的思路很简单,即从数组末尾开始,将当前位置的数与它之前的任意一个数交换顺序,直到数…

    算法与数据结构 2023年5月19日
    00
  • C语言对数组元素进行冒泡排序的实现

    冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数组,每次比较相邻的元素,如果顺序不对就交换元素。通过多次遍历来实现排序。 下面是C语言进行数组元素冒泡排序的具体实现过程: 实现步骤 首先确定要排序的数组以及数组的大小。比如说,我们要对包含10个整数的数组进行排序,可以将其定义为 int a[10] = {1,2,3,4,5,6,…

    算法与数据结构 2023年5月19日
    00
  • JavaScript求解最长回文子串的方法分享

    JS求解最长回文子串的方法分享: 一、前置知识 在学习JS求解最长回文子串之前,你需要掌握以下知识: 严格模式 回文字符串 动态规划 二、什么是回文字符串? 回文字符串是指正着读和倒着读都一样的字符串。例如,’level’、’racecar’、’rotor’ 都是回文字符串。 三、求解最长回文子串的方法 对于字符串中的每一个字符,判断它和它往前的字符组成的子…

    算法与数据结构 2023年5月19日
    00
  • 基于C++实现的各种内部排序算法汇总

    基于C++实现的各种内部排序算法汇总 概述 本攻略汇总了常见的基于C++实现的内部排序算法,包括选择排序、冒泡排序、插入排序、希尔排序、归并排序、快速排序、堆排序。以下是算法的具体实现过程。 选择排序 选择排序的核心思想是每次找到未排序序列中的最小值,然后放到已排序序列的末尾。具体实现过程如下: void selection_sort(vector<i…

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