C++实现选择性排序(SelectionSort)

C++实现选择性排序(SelectionSort)

选择性排序(Selection Sort)是计算机科学中一种简单直观的排序算法。它的工作原理是:首先在未排序的数列中找到最小(大)的元素,然后将其存放到数列的起始位置,接着再从剩余的未排序元素中继续寻找最小(大)的元素,然后放到已排序序列的末尾。以此类推,直到所有元素均被排序完毕。

具体的实现步骤如下:

  1. 在未排序的数列中找到最小元素。
  2. 将其存放到数列的起始位置。
  3. 从剩余未排序的元素中继续寻找最小元素。
  4. 将其存放到已排序序列的末尾。
  5. 以此类推,直到所有元素均被排序完毕。

以下是C++代码实现以及相关注释:

#include <iostream>
using namespace std;

void selectionSort(int arr[], int n) {
    int i, j, min_idx;

    // 依次遍历数组元素
    for (i = 0; i < n - 1; i++) {

        // 找到未排序区域中最小元素的下标
        min_idx = i;
        for (j = i + 1; j < n; j++)
            if (arr[j] < arr[min_idx])
                min_idx = j;

        // 将未排序区域中最小元素放到已排序序列的末尾
        swap(arr[min_idx], arr[i]);
    }
}

int main() {
    int arr[] = { 64, 25, 12, 22, 11 };
    int n = sizeof(arr) / sizeof(arr[0]);

    // 调用选择排序函数
    selectionSort(arr, n);

    // 打印排序后的数组
    cout << "Sorted array: ";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    return 0;
}

在本示例中,我们定义了一个名为 selectionSort() 的排序算法函数来进行选择排序,并将完整的未排序数组作为函数实参传递,以及数组中的元素数目 n

使用两个循环来实现选择排序的算法。通过第一个循环遍历数组中的每个未排序元素,通过第二个循环遍历未排序区域中的元素,并找到最小元素的下标。然后将未排序区域中的最小元素放到已排序序列的末尾,以达到排序的目的。

以下是示例,更具体地展示了本算法的工作原理:

示例1:

假设输入的未排序数组为 {64, 25, 12, 22, 11}。在第一次循环之后,我们可以通过找到最小的元素(11)并将其放置在数组的开头位置时得到以下结果:

11 25 12 22 64

示例2:

在第二次循环后,我们可以找到最小元素(12)并将其放置在索引 1 的位置,以下是本次循环的结果:

11 12 25 22 64

继续执行以上步骤,直到所有元素都被排序完成,得到如下排序后的数组:

11 12 22 25 64

希望这个C++实现选择性排序(SelectionSort)的教程对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现选择性排序(SelectionSort) - Python技术站

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

相关文章

  • TF-IDF与余弦相似性的应用(一) 自动提取关键词

    下面我将详细讲解“TF-IDF与余弦相似性的应用(一) 自动提取关键词”的完整攻略。 什么是TF-IDF? TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用于信息检索与分类中的文本特征提取方法,用于评估一段文本中词的重要程度。TF-IDF的核心思想就是:一个词在一篇文档中出现的频次(TF)越高,同时…

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

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

    算法与数据结构 2023年5月19日
    00
  • 京东在数据挖掘方面对推荐技术的优化

    京东在数据挖掘方面对推荐技术的优化 京东是中国著名的电商平台,一直在推进自己的推荐系统技术,以提高用户交互体验和推广效果。在数据挖掘方面,京东对推荐技术进行了一系列的优化,包括以下几个方面: 1. 数据收集和处理 京东首先通过大数据技术收集和整理用户的行为数据,包括购买、浏览、评价等多个方面。同时利用机器学习技术进行数据建模,包括对用户画像、商品描述等方面的…

    算法与数据结构 2023年5月19日
    00
  • asp下几种常用排序算法

    我将为您详细讲解ASP下几种常用排序算法的完整攻略。 一、排序算法简介 排序算法是计算机科学中非常基础的算法之一。它是将一组数据中的元素按照某种规则进行排序的过程。排序算法是计算机程序设计的基础,它涉及到数据结构、算法、模式识别等计算机科学领域内的基础理论。 排序算法主要分为以下几种: 冒泡排序 选择排序 插入排序 快速排序 归并排序 本文将针对ASP下几种…

    算法与数据结构 2023年5月19日
    00
  • JavaScript实现数组全排列、去重及求最大值算法示例

    JavaScript实现数组全排列、去重及求最大值算法示例 实现数组全排列 数组的全排列即为将数组中所有元素进行全排列的结果。实现数组全排列的常用方法为回溯法。 回溯法的思想是从第一个元素开始,固定第一个元素,对于剩下的元素进行全排列,得到结果后将第一个元素与第二个元素交换,并对第二个元素之后的元素进行全排列,以此类推,直到最后一个元素,此时将所有的结果返回…

    算法与数据结构 2023年5月19日
    00
  • Swift中排序算法的简单取舍详解

    Swift中排序算法的简单取舍详解 排序算法在编程中是非常常见的算法之一,从小到大或者从大到小排列一串数字列表,这是必不可少的需求。在Swift编程语言中,也提供了多种排序算法供我们使用。但是,不同的排序算法在排序过程中的时间复杂度和空间复杂度往往是不同的。因此,在实际的编程中,我们需要根据实际情况来选择合适的排序算法。本文将为大家详细讲解Swift中四种常…

    算法与数据结构 2023年5月19日
    00
  • C++排序算法之插入排序

    C++排序算法之插入排序 插入排序是一种简单且直观的排序算法,在实现上也比较容易。它的基本思路是把一个待排序的序列分成两个部分:已排序部分和未排序部分,然后从未排序部分取出一个元素插入到已排序部分的合适位置,作为新的已排序部分。 算法过程 插入排序的过程可以用以下步骤概括: 将序列的第一个元素看成已排序部分,其他元素看成未排序部分 从未排序部分选择一个元素,…

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

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

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