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

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语言简明讲解快速排序的应用 快速排序的概述 快速排序是一种基于比较的排序算法,最初由Tony Hoare于1959年发明,因其在实践中的高效性而受到广泛的应用。快速排序的基本思想是通过不断地分割(partition)和交换(swap)来实现排序,具体来说,就是先选取一个pivot数,然后将序列中小于pivot的数放在pivot左边,大于pivot的数放在p…

    算法与数据结构 2023年5月19日
    00
  • JS深入学习之数组对象排序操作示例

    《JS深入学习之数组对象排序操作示例》是一篇介绍JavaScript数组排序相关操作的文章,主要包含以下内容: 1. 数组对象排序 1.1 sort()方法 sort()方法是JavaScript中的一个数组排序方法,可以用于对数组的元素进行排序。sort()方法可以接收一个可选的排序函数作为参数,通过这个函数,我们可以实现自定义的排序规则。 语法为:arr…

    算法与数据结构 2023年5月19日
    00
  • C语言中的5种简单排序算法(适合小白)

    C语言中的5种简单排序算法(适合小白) 介绍 排序算法是计算机科学中最基本的算法之一,其主要目的是将一组无序的数据按照一定的规则进行排列。在计算机程序设计中,排序算法是非常常用的操作之一。 本文将会介绍C语言中5种简单的排序算法,这些算法非常适合新手上手学习。 以下是5种简单排序算法的详细介绍和实例代码。 冒泡排序(Bubble Sort) 冒泡排序也是一种…

    算法与数据结构 2023年5月19日
    00
  • JS实现的全排列组合算法示例

    下面针对 “JS实现的全排列组合算法示例” 给出完整攻略。 什么是全排列组合算法? 全排列组合是指将一个集合中的元素排成一列,可以有不同的排列方式,这些不同的排列方式就称为全排列。当从这个集合中取出一部分排成一列时,称为排列,而取出一部分组合称为组合。 JS实现全排列组合算法的步骤 具体实现全排列组合算法的步骤如下: 定义需要排列和组合的数组或字符串; 定义…

    算法与数据结构 2023年5月19日
    00
  • 算法系列15天速成 第一天 七大经典排序【上】

    我会为你详细讲解“算法系列15天速成 第一天 七大经典排序【上】”的完整攻略。 标题 算法系列15天速成 第一天 七大经典排序【上】 内容 本文主要介绍了常用的七大经典排序算法,分别是插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序以及堆排序。对每个算法的特点、实现过程和时间复杂度进行了详细的讲解,同时也对每个算法进行了简单的示例说明。 插入排序 …

    算法与数据结构 2023年5月19日
    00
  • C/C++实现快速排序(两种方式)图文详解

    C/C++实现快速排序(两种方式)图文详解 什么是快速排序 快速排序是一种基于分治策略的排序算法,由C.A.R.Hoare在1962年发明。快速排序的基本思路是:在待排序序列中选择一个元素作为“基准”(pivot),将序列分成两个部分,所有比“基准”小的元素放在一边,所有比“基准”大的元素放在另一边。如此递归下去直到序列有序。 算法流程 快速排序的流程可以简…

    算法与数据结构 2023年5月19日
    00
  • redis zset实现滑动窗口限流的代码

    Redis ZSET(有序集合)非常适合实现滑动窗口限流。下面是实现滑动窗口限流的Redis ZSET代码攻略: 步骤一:定义一个键和窗口大小 为了使用Redis ZSET实现滑动窗口限流,您需要为每个限流器定义一个键。键的值将存储在Redis Sorted Set中,并且每个元素将具有其分数。我们将使用时间戳作为分数。此外,需要指定每个限制限流器的窗口大小…

    算法与数据结构 2023年5月19日
    00
  • Trie树_字典树(字符串排序)简介及实现

    接下来我将详细讲解“Trie树_字典树(字符串排序)简介及实现”的完整攻略。 什么是 Trie 树? Trie 树,也叫字典树,是一种树形数据结构,用于处理字符串匹配、排序等问题。它的特点是能够快速地查找特定前缀或后缀的字符串。 Trie 树的基本实现 Trie 树通常是一棵多叉树,其中根节点不包含任何字符,每个子节点包含一个字符,组成一个完整的字符串。下面…

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