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日

相关文章

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

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

    算法与数据结构 2023年5月19日
    00
  • Java中自然排序和比较器排序详解

    Java中自然排序和比较器排序详解 简介 Java中排序分为自然排序和比较器排序两种方式。当对象包含了Comparable接口实现的compareTo方法时,便支持了自然排序。而比较器排序则需要自己实现一个Comparator接口,并传入调用方法中。本文将从以下几个方面详细介绍这两种排序方式: Comparable接口及compareTo方法 Compara…

    算法与数据结构 2023年5月19日
    00
  • 浅谈2路插入排序算法及其简单实现

    浅谈2路插入排序算法及其简单实现 概述 2路插入排序算法是插入排序算法的一种变体,其主要思想是将待排序数据集分成两个子序列,分别进行插入排序,最后将两个排好序的子序列合并成一个有序序列。2路插入排序算法比普通的插入排序算法在特定数据集下可以获得更好的排序效果。 实现思路 2路插入排序算法可以分为以下几个步骤: 将待排序数据集按照大小分成两个子序列,分别进行插…

    算法与数据结构 2023年5月19日
    00
  • 详解JavaScript如何实现四种常用排序

    详解JavaScript如何实现四种常用排序 排序是计算机科学中的重要概念,其主要目的是将一组元素按照一定规则进行排序,便于使用。常见的排序算法有四种:冒泡排序、插入排序、选择排序和快速排序。本文将详细讲解如何使用JavaScript实现这四种常用排序。 冒泡排序 冒泡排序是最简单的排序算法之一,其基本思想是将要排序的数据按从小到大的顺序排列。具体实现过程如…

    算法与数据结构 2023年5月19日
    00
  • JS排序之选择排序详解

    JS排序之选择排序详解 选择排序简介 选择排序,就是每一次在未排序的元素中选择最小(或最大)的一个元素,放在已排序的元素的末尾,直到所有元素都排好序。 首先,我们要明白选择排序的核心思想。这种排序方式并不是两两交换位置,而是在遍历整个待排序的序列中先找到最小的元素,放在正确的位置,然后再从剩余的未排序元素中继续寻找最小的元素,放在已排序序列的末尾,依次类推,…

    算法与数据结构 2023年5月19日
    00
  • 华为笔试算法题汇总

    下面是“华为笔试算法题汇总”的完整攻略: 一、题目来源 本篇攻略总结了华为笔试中常见的算法题目,这些题目可以在华为科技招聘官网上的笔试环节中出现。 二、题目类型 华为笔试中常见的算法题目主要包括: 字符串操作:如字符串反转、字符串查找等; 数组排序:如快排、归并排序等; 链表操作:如链表反转、链表合并等; 动态规划问题:如背包问题、最长公共子序列等; 图论问…

    算法与数据结构 2023年5月19日
    00
  • JavaScript之排序函数_动力节点Java学院整理

    JavaScript之排序函数_动力节点Java学院整理 背景 在JavaScript中,排序是一项非常常见的操作,在很多应用中都需要用到排序函数。了解和掌握排序函数的使用方法,可以大大提升我们编写JavaScript程序的效率。 排序函数的定义 在JavaScript中,排序函数是Array对象中的一个方法,用于对数组进行排序。其基本的语法格式如下: ar…

    算法与数据结构 2023年5月19日
    00
  • php自定义排序uasort函数示例【二维数组按指定键值排序】

    首先,让我们先了解一下 uasort 函数。uasort 函数是 php 中的一个内置函数,用于对数组进行自定义排序。这个函数和 sort 函数的区别在于,uasort 函数允许我们自定义一个排序函数,在排序时使用这个函数进行排序,而 sort 函数则只能使用默认的排序函数。 下面是一个使用 uasort 函数的示例,演示如何对 PHP 二维数组按照指定键值…

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