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日

相关文章

  • Javascript排序算法之合并排序(归并排序)的2个例子

    下面我将详细讲解“Javascript排序算法之合并排序(归并排序)的2个例子”的完整攻略。该攻略包含以下内容: 合并排序算法的原理介绍 归并排序实现流程 两个例子的具体实现及演示 合并排序算法的原理介绍 合并排序是一种基于分治思想的排序算法。它的基本思路是将待排序序列分成若干个子序列,对每个子序列递归地进行排序,最后合并所有子序列,得到最终的排序结果。 具…

    算法与数据结构 2023年5月19日
    00
  • C语言快速排序函数用法(qsort)

    C语言快速排序函数用法(qsort) 简介 快速排序是一种常见的排序算法,而C语言中的qsort函数则是一种快速排序的实现。使用qsort函数,我们无需自己编写快速排序算法的代码,只需要提供一个排序所需的比较函数即可。使用qsort函数,既可以方便的排序数组,还可以排序链表等数据结构。 函数原型 void qsort(void *base, size_t n…

    算法与数据结构 2023年5月19日
    00
  • PHP rsa加密解密算法原理解析

    PHP RSA加密解密算法原理解析 RSA是一种非对称加密算法,它使用两个密钥:公钥和私钥。公钥可以向外公开,用于加密数据;而私钥只由数据的持有者保管,用于解密数据。在本文中,我们会使用PHP实现RSA加密解密算法,并分享一些示例代码。 RSA加密解密算法原理 RSA加密解密算法的原理主要是基于数学中的大数分解问题和欧拉定理。以下是RSA算法的一般流程: 用…

    算法与数据结构 2023年5月19日
    00
  • 深入解析桶排序算法及Node.js上JavaScript的代码实现

    深入解析桶排序算法及Node.js上JavaScript的代码实现 桶排序算法介绍 桶排序算法是一种非常有效的排序方法,通常用于在已知数据范围的情况下对数据进行排序。桶排序将数据分配到一个或多个桶中,然后对每个桶中的数据进行排序,最后将所有桶中的数据依次合并即可得到有序的结果。 桶排序的时间复杂度为O(n),其中n为待排序的数据个数。如果数据范围较大,需要分…

    算法与数据结构 2023年5月19日
    00
  • PHP排序算法系列之直接选择排序详解

    PHP排序算法系列之直接选择排序详解 一、前言 本文将详细讲解直接选择排序,直接选择排序是一个简单但常用的排序算法,对初学者来说是个很好的入门算法,代码也比较易懂。 二、算法原理 直接选择排序,是一种比较简单直观的排序算法。其基本思想为:将待排序的序列划分为已排序和未排序两部分,从未排序的序列中选择最小的元素,将其插入已排序序列的末尾,直到所有元素均排序完毕…

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

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

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

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

    算法与数据结构 2023年5月19日
    00
  • JS实现的冒泡排序,快速排序,插入排序算法示例

    为了给大家更好的理解,这里先介绍一下这三种排序算法的基本思想: 冒泡排序:依次比较相邻两个元素的大小,将较大的元素往后移动,每一轮比较都可以确定一个最大的元素,因此需要进行N-1轮。 快速排序:选定一个中心点,将小于这个中心点的元素排在左边,大于这个中心点的元素排在右边,然后分别对左右两边的元素重复这个操作。 插入排序:将数组按升序排列,一次将每个元素插入到…

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