C++选择排序算法实例详解

yizhihongxing

C++选择排序算法实例详解

选择排序算法简介

选择排序是一种简单直观的排序算法,其思想是首先找到序列中的最小值,然后将其放到序列的最前面。接着,从剩余序列中找到次小值,将其放到已排序序列的末尾。以此类推,直到排序完成。

选择排序算法的时间复杂度为$O(n^2)$,空间复杂度为$O(1)$,并且由于其算法思想简单,代码实现容易,所以在实际应用中还是比较常见的排序算法之一。

C++选择排序实现

以下是C++中选择排序的实现代码:

#include <iostream>
#include <vector>
using namespace std;

void selectionSort(vector<int>& arr) {
    int n = arr.size(); // 计算数组的大小
    for (int i = 0; i < n - 1; i++) {
        int minIdx = i; // 定义最小值的下标为i
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIdx]) {
                minIdx = j; // 更新最小值的下标
            }
        }
        swap(arr[i], arr[minIdx]); // 将当前最小值放到正确的位置
    }
}

int main() {
    vector<int> arr{9, 2, 1, 4, 3, 7, 5};
    selectionSort(arr);
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

代码中的selectionSort函数接受一个整型数组作为参数,将其进行排序。n表示数组的大小,第一个for循环用于遍历数组的除最后一个元素以外的所有元素,每次循环找到未排序序列中的最小值,并将其放到已排序序列的末尾。内层的for循环用于查找未排序序列中的最小值,minIdx变量记录当前最小值的下标。swap函数用于交换数组中的元素。

选择排序示例1

假设现有一个数组arr为 {9, 4, 6, 1, 3},按照选择排序的方法对其进行排序。

  1. 首先,最小值为1,将此值与第一个元素9交换位置,现在数组变为{1, 4, 6, 9, 3}。
  2. 接着,找到次小值3,将其与第二个元素4交换位置,现在数组变为{1, 3, 6, 9, 4}。
  3. 然后,找到次小值4,将其与第三个元素6交换位置,现在数组变为{1, 3, 4, 9, 6}。
  4. 然后,找到次小值6,将其与第四个元素9交换位置,现在数组变为{1, 3, 4, 6, 9}。
  5. 最后,遍历完成后,得到已经排好序的数组{1, 3, 4, 6, 9}。

选择排序示例2

假设现有一个数组arr为 {5, 8, 1, 3, 6, 4},按照选择排序的方法对其进行排序。

  1. 首先,最小值为1,将此值与第一个元素5交换位置,现在数组变为{1, 8, 5, 3, 6, 4}。
  2. 接着,找到次小值3,将其与第三个元素5交换位置,现在数组变为{1, 8, 3, 5, 6, 4}。
  3. 然后,找到次小值4,将其与第四个元素5交换位置,现在数组变为{1, 8, 3, 4, 6, 5}。
  4. 接下来,找到次小值5,将其与最后一个元素6交换位置,现在数组变为{1, 8, 3, 4, 5, 6}。
  5. 遍历完成后,得到已经排好序的数组{1, 3, 4, 5, 6, 8}。

结语

以上就是C++中选择排序的实现方法,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++选择排序算法实例详解 - Python技术站

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

相关文章

  • js交换排序 冒泡排序算法(Javascript版)

    JavaScript冒泡排序算法 算法描述 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的序列,一次比较相邻的两个元素,如果它们的顺序错误就将它们交换。遍历序列的工作是重复地进行直到没有再需要交换,也就是说该序列已经排序完成。 算法实现 JavaScript 代码 function bubbleSort(arr) { var l…

    算法与数据结构 2023年5月19日
    00
  • python中的插入排序的简单用法

    下面是Python中插入排序的简单用法攻略: 1. 什么是插入排序 插入排序是一种简单的排序算法,它的基本思想是将未排序的元素依次插入到已排序的有序序列中的合适位置,以此完成排序。插入排序的时间复杂度为O(n^2),通常用于小规模数据的排序。 2. 插入排序的Python实现 以下是插入排序的Python代码实现: def insertion_sort(da…

    算法与数据结构 2023年5月19日
    00
  • C#中使用基数排序算法对字符串进行排序的示例

    下面是使用基数排序算法对字符串进行排序的完整攻略。 什么是基数排序算法? 基数排序算法是一种非比较排序算法,它先按照低位进行排序,然后再按照高位进行排序。在对一组字符串进行排序时,可以先按照字符串的最后一位进行排序,然后再按照倒数第二位进行排序,逐步地按照每一位进行排序,最终完成整组字符串的排序。 C#中实现基数排序算法的步骤 在 C# 中实现基数排序算法需…

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

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

    算法与数据结构 2023年5月19日
    00
  • PHP实现根据数组某个键值大小进行排序的方法

    在PHP中,可以使用内置函数 array_multisort() 来对数组进行排序,并且可以根据某个键值的大小进行排序。下面是实现的步骤: 步骤一:准备数组 首先,需要准备一个包含多个元素的数组。每个元素都是一个关联数组,包含多个键值对。本例中,我们以元素数组中的 age 键值作为排序标准。 示例: $people = array( array("…

    算法与数据结构 2023年5月19日
    00
  • 利用JavaScript在网页实现八数码启发式A*算法动画效果

    下面是利用JavaScript在网页实现八数码启发式A*算法动画效果的完整攻略: 简介 八数码问题是指在一个33的方格上,放置了1~8这八个数字,其中有一个空格可以移动,初态和目标态之间的变换最少需要几步。而启发式A算法是一种针对图形和网络中的路径规划问题的搜索算法。 利用JavaScript实现八数码启发式A*算法动画效果,可以帮助用户在屏幕上直观地看到计…

    算法与数据结构 2023年5月19日
    00
  • C语言手把手教你实现贪吃蛇AI(中)

    来看看如何实现贪吃蛇AI。首先,我们需要明确几个概念: 贪吃蛇:一个二维平面上移动的形如蛇的游戏角色。 AI:人工智能,指让计算机模拟人的智能行为。 贪吃蛇AI的实现需要完成以下步骤: 初始化游戏环境 实现蛇的移动 实现蛇的AI行为 检测游戏结束条件 接下来我们将一步步讲解如何实现这个过程。 1. 初始化游戏环境 在C语言中,我们需要使用 ncurses 库…

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

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

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