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

yizhihongxing

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日

相关文章

  • Java重点之基于比较的七大排序

    Java重点之基于比较的七大排序 在计算机科学中,排序是一种重要的基本操作,将一组元素按照一定的规则进行排列。排序算法的效率直接影响着程序的执行效率,因此需要掌握各种排序算法的实现方法及其优缺点。基于比较的排序算法,是按照元素之间的大小关系进行比较和交换,常见的基于比较的排序算法有冒泡排序、插入排序、选择排序、归并排序、快速排序、堆排序和希尔排序。 冒泡排序…

    算法与数据结构 2023年5月19日
    00
  • 利用JavaScript实现的10种排序算法总结

    作为“利用JavaScript实现的10种排序算法总结”的作者,首先需要明确以下内容: 熟悉10种排序算法的原理与流程 理解JavaScript作为一门编程语言的特点和应用场景 知道如何将算法的流程用JavaScript代码实现 针对以上内容,可以采取以下步骤: 梳理10种排序算法的流程和实现方式,用markdown文本形式编写对应的标题和文本,例如: 插入…

    算法与数据结构 2023年5月19日
    00
  • php排序算法(冒泡排序,快速排序)

    PHP排序算法是常见的编程问题,其中冒泡排序和快速排序是两种常见的算法。下面我会详细讲解这两种算法的原理和实现方法。 冒泡排序 冒泡排序是一种基本的排序算法,其原理是反复遍历要排序的元素,比较相邻元素的大小,若顺序不对则交换位置,一直重复该过程直到所有元素都按照升序排好。 冒泡排序的实现过程可以分为两个步骤: 外层循环控制排序的趟数,循环次数为 $n-1$ …

    算法与数据结构 2023年5月19日
    00
  • PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解

    PHP是一门广泛应用于Web开发领域的脚本语言,而算法在计算机科学领域也是非常重要的一部分,掌握一些常用的算法能够为程序员的工作带来极大的便利。本文将详细讲解PHP冒泡排序、二分查找、顺序查找、二维数组排序算法函数的详解。 冒泡排序 冒泡排序是一种比较简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就将它们交换,直到没有任何一对…

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

    下面我将详细讲解一下JS实现的排列组合算法示例的完整攻略。 算法原理 JS实现的排列组合算法主要基于数学组合学,其核心思想是将需要进行排列组合的数据按照一定规则进行排列组合,得到所有可能的排列组合方式。这里我们首先介绍排列与组合的概念: 排列:从n个不同元素中取出m个元素进行排列,按照一定的顺序排列的所有可能的情况被称为排列。其中,n>m。 组合:从n…

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

    C++插入排序算法实例详解 什么是插入排序算法? 插入排序算法是一种简单直观的排序算法,其基本思想是将待排序的数据插入已排序序列的合适位置,以达到排序的目的。该算法的时间复杂度为 O(N^2),适用于数据量较小的排序场景。 插入排序算法的基本步骤 插入排序算法的基本步骤可以归纳为以下三个: 将待排序序列的第一个元素视作已排序序列,将后面的元素逐个与已排序序列…

    算法与数据结构 2023年5月19日
    00
  • 设计师灵感来源 细数上市公司LOGO背后的含义

    设计师灵感来源 作为设计师,找灵感是创作过程中的一项重要任务,而且好的设计往往都来自于深度的思考和充足的灵感。那么,设计师在哪里寻找灵感呢? 灵感来源 1. 观察 设计师可以通过观察日常生活中的事物来获取灵感,例如自然风光、建筑、图形等。观察中的选择与细节是关键,需要有敏锐的观察力和审美能力。 2. 学习 学习可以让设计师积累更多知识与思想,这也为他们提供了…

    算法与数据结构 2023年5月19日
    00
  • 七大经典排序算法图解

    “七大经典排序算法图解”攻略 简要介绍 “七大经典排序算法图解”是一篇介绍常见排序算法的文章。通过对每个算法的思想、代码实现和性能分析进行详细讲解,帮助读者更好地理解和掌握排序算法。 算法列表 本文介绍的七个排序算法如下: 冒泡排序 插入排序 选择排序 快速排序 归并排序 堆排序 希尔排序 冒泡排序 冒泡排序是一种简单的排序算法,它基于交换相邻元素的思想。具…

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