C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

yizhihongxing

C++ 基本算法 冒泡法、交换法、选择法

在编程中,基本算法是非常重要的。本文将介绍C++中基本算法的三种实现方式:冒泡排序、交换排序、选择排序,并附上相应的实现代码集合以及示例说明。

冒泡排序

冒泡排序,顾名思义,就像水中的气泡一样,从底部慢慢上升。在排序过程中,每次比较相邻两个元素的大小,如果发现顺序不对,就进行交换,直到所有元素都排列好。冒泡排序的时间复杂度为$O(n^2)$,因此对于大规模数据的排序效率比较低。

实现代码:

void bubble_sort(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]){
                std::swap(array[j], array[j+1]);
            }
        }
    }
}

示例说明:

int main() {
    int arr[5] = {5, 3, 2, 4, 1};
    bubble_sort(arr, 5);
    for(int i = 0; i < 5; i++){
        std::cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:1 2 3 4 5,说明成功排列数组中的元素。

交换排序

交换排序也是像冒泡排序一样,通过交换相邻的元素来进行排序。但是,它和冒泡排序的区别在于,交换排序只在确认了所有的比较结果后,再进行元素交换。因此,相比冒泡排序,交换排序的效率会更高。

实现代码:

void exchange_sort(int array[], int length){
    for(int i = 0; i < length - 1; i++){
        int min_idx = i;
        for(int j = i + 1; j < length; j++){
            if(array[j] < array[min_idx]){
                min_idx = j;
            }
        }
        std::swap(array[i], array[min_idx]);
    }
}

示例说明:

int main() {
    int arr[5] = {5, 3, 2, 4, 1};
    exchange_sort(arr, 5);
    for(int i = 0; i < 5; i++){
        std::cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:1 2 3 4 5,说明成功排列数组中的元素。

选择排序

选择排序和冒泡排序和交换排序不同,它并不是每次将相邻的元素进行比较和交换,而是选择一个最小的元素,将它依次放到数组的最前面,然后继续进行选择排序。选择排序的时间复杂度为$O(n^2)$。

实现代码:

void selection_sort(int array[], int length){
    for(int i = 0; i < length-1; i++){
        int min_idx = i;
        for(int j = i + 1; j < length; j++){
            if(array[j] < array[min_idx]){
                min_idx = j;
            }
        }
        if(i != min_idx){
            std::swap(array[i], array[min_idx]);
        }
    }
}

示例说明:

int main() {
    int arr[5] = {5, 3, 2, 4, 1};
    selection_sort(arr, 5);
    for(int i = 0; i < 5; i++){
        std::cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:1 2 3 4 5,说明成功排列数组中的元素。

以上是C++中基本算法冒泡排序、交换排序和选择排序的代码实现和示例说明,希望对读者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 基本算法 冒泡法、交换法、选择法、实现代码集合 - Python技术站

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

相关文章

  • C语言实现数组元素排序方法详解

    C语言实现数组元素排序方法详解 概述 数组元素排序是C语言中常见的操作,它将数组中的元素按照一定的规则进行排序,使其符合特定的要求。常见的排序方法包括冒泡排序、插入排序、选择排序、快速排序等。 本文将详细讲解C语言实现数组元素排序的方法,包括上述四种排序方法的原理、代码实现,帮助初学者快速入门。 冒泡排序 冒泡排序是一种简单的排序方法,它依次比较相邻的两个元…

    算法与数据结构 2023年5月19日
    00
  • STl中的排序算法详细解析

    STl中的排序算法详细解析 概述 在STL中,sort是一种常用的排序算法。sort算法旨在将元素从小到大排序,但也可以使用cmp函数指定排序方式。 算法实现 sort算法基于“快速排序”算法的实现。其基本思想是从待排序列中选取一定的数值作为划分元素(pivot),通过一趟排序将所有比该元素小的数放到它的左边,所有比该元素大的数放到它的右边,然后再对左右两个…

    算法与数据结构 2023年5月19日
    00
  • C语言下快速排序(挖坑法)详解

    C语言下快速排序(挖坑法)详解 什么是快速排序 快速排序是将一个待排序的序列分成两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再对这两部分分别进行排序,递归执行该操作直到将整个序列排好为止。快速排序使用了分治思想。由于在每一次的递归过程中,都将待排序的序列分成两部分,因此处理的数据量不断减少,使得算法的效率比较高。 快速排序的实现 挖坑法 挖坑法…

    算法与数据结构 2023年5月19日
    00
  • Python实现选择排序

    当我们需要对一个列表或数组进行排序时,选择排序是一种简单易懂的方法。Python是一种非常流行的编程语言,它可以轻松实现选择排序。 以下是Python实现选择排序的攻略: 选择排序的原理 选择排序是一种简单直观的排序算法,其基本思想是每次选择出最小的元素,放到已经排好序的部分的末尾。 实现步骤 找到未排序部分的最小元素; 将其放在已排序部分的末尾; 重复步骤…

    算法与数据结构 2023年5月19日
    00
  • GO语言中常见的排序算法使用示例

    首先感谢你对“GO语言中常见的排序算法使用示例”的关注,下面是一个完整的攻略: GO语言中常见的排序算法 在GO语言中,常见的排序算法包括:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序、堆排序等。这些排序算法的具体实现方式有所不同,但都可以在GO语言的标准库中找到相应的方法。 冒泡排序 冒泡排序的基本思路是比较相邻的两个元素,如果它们的顺序错误…

    算法与数据结构 2023年5月19日
    00
  • C语言 冒泡排序算法详解及实例

    冒泡排序算法详解及实例 什么是冒泡排序算法 冒泡排序是一种很基础的排序算法,它通过从序列的一端开始,依次比较相邻两个元素的大小,如果它们的顺序不对,就交换它们的位置,直到把整个序列排序完成。冒泡排序算法的时间复杂度为O(n^2),所以它并不适合排序规模很大的序列。 冒泡排序算法的实现 冒泡排序算法的实现很简单,其核心代码如下: void bubble_sor…

    算法与数据结构 2023年5月19日
    00
  • JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】

    JavaScript数据结构与算法之基本排序算法定义与效率比较 概述 排序是计算机科学中最常见的操作之一,是将数据按照一定的顺序重新排列的过程。排序算法被广泛应用于搜索、数据压缩、数据库等领域。JavaScript中常用的基本排序算法有3种:冒泡排序、选择排序和插入排序。本文将详细介绍这三种算法的原理、JavaScript实现以及时间复杂度比较。 冒泡排序 …

    算法与数据结构 2023年5月19日
    00
  • Linux静态链接库使用类模板的快速排序算法

    下面是对“Linux静态链接库使用类模板的快速排序算法”的详细讲解。 简介 静态链接库是一种文件格式,其中包含了许多可共享的目标文件,这些目标文件可以在运行时被动态链接器加载。可以将静态链接库视为预编译的代码,包含在可执行程序中,因此在执行时无需加载库文件,从而提高程序的运行效率。 在Linux下,可以使用静态链接库的方式来实现类模板的快速排序算法,具有较高…

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