与冒泡排序相比,选择性排序与冒泡排序有一定的相似性。

选择排序:

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。---百度词条

编程过程中,我们主要关注两个问题

1.寻找数组中的最小值,获取其下标(处于数组中的位置),将其交换到排好序的队列末尾

2.实现排序队列末尾的动态变化。(即把最小值交换到指定位置)

代码如下:

//选择排序初试
#include <iostream>
using namespace std;
void selectionSort(int[]);
int main()
{//构建排序数组int nums[10] = { 0 };for (int i = 0; i < 10; i++)cin >> nums[i];//处理数组selectionSort(nums);//输出结果for (int i = 0; i < 10; i++)cout << nums[i] << " ";return 0;
}
void selectionSort(int nums[])
{int key = 0, index = 0, temp = 0;while (key < 9){for (int i = key; i < 10; i++){//获取最小数的下标if (nums[i] < nums[index])index = i;}temp = nums[key];nums[key] = nums[index];nums[index] = temp;//再次重置index指向元素,将其他元素与之比较index = key + 1;//已排好序的元素不再参与排序//下一个要存放的位置是nums中下标为key的下一个位置key++;}
}

C++实现选择性排序相关推荐

  1. js排序算法详解-选择排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-选择排序 相对于冒泡排序还有一种类似的方法就是选择排序,顾名思义就是选择性排序,什么意思呢? 这么来理解,假设 ...

  2. MATLAB应用实战系列NSGA-II多目标优化算法原理及应用实例(附MATLAB代码)

    前言 NSGA-Ⅱ是最流行的多目标遗传算法之一,它降低了非劣排序遗传算法的复杂性,具有运行速度快,解集的收敛性好的优点,成为其他多目标优化算法性能的基准. NSGA-Ⅱ算法是 Srinivas 和 D ...

  3. c语言指针的相关运算,C语言指针的运算

    本文讨论使用指针进行的运算,最重要的运算是获取指针所引用的对象或函数.也可以比较指针,使用指针来遍历一个内存区域. 使用指针读取与修改对象 间接运算符 * 生成内存中的位置,该位置的地址存储在一个指针 ...

  4. java的使用条件_Java使用条件语句和循环结构确定控制流

    与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流.本文将简单讲解条件.循环和switch. 一.块作用域 块(block),即复合语句.是指由一对大括号括起来的若干条简单的Java语句 ...

  5. 数据结构算法 | 单调栈

    文章目录 算法概述 题目 下一个更大的元素 I 思路 代码 下一个更大元素 II 思路 代码 132 模式 思路 代码 接雨水 思路 算法概述 当题目出现 「找到最近一个比其大的元素」 的字眼时,自然 ...

  6. a*算法matlab代码_NSGAII多目标优化算法讲解(附MATLAB代码)

    小编今天为大家讲解NSGA-II多目标优化算法,提到多目标优化,大家可能第一个就想到NSGA-II算法,今天小编就带领大家解开NSGA-II的神秘面纱. NSGA-II全称是快速非支配排序遗传算法,这 ...

  7. js系列教程5-数据结构和算法全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  8. Excel对话框大全

    Excel对话框大全 序号 名称 描述 1 Application.Dialogs(1).Show 是调用打开对话框  2 Application.Dialogs(5或145).Show 是调用另存为 ...

  9. Office对话框大全

    Excel对话框大全 序号 名称 描述 1 Application.Dialogs(1).Show 是调用打开对话框  2 Application.Dialogs(5或145).Show 是调用另存为 ...

最新文章

  1. 同一个页面,两次请求保证查询条件不变(题目不太相符,我比较渣,问题都不知道怎么表述!--)...
  2. java 计算 日期_java 计算某日期 多少天后的日期
  3. 【Linux】一步一步学Linux——exec命令(208)
  4. 2009编程语言排名
  5. 897. 递增顺序查找树-未解决
  6. 深度学习图像超分辨率最新综述:从模型到应用
  7. 使用OpenCV-python实现手写数字识别
  8. Windows下C++计算代码段运行时间
  9. 每天一道剑指offer-连续子数组的最大和
  10. 全网首发:跟踪分析This parser does not support specification “null“ version “null“
  11. bigmp4.com AI 视频无损放大高清补帧工具
  12. winrar注册以及去广告
  13. 手写汉字识别数据集的预处理
  14. 八、Sentinel.conf 配置文件详细介绍
  15. 听华应龙的课我会用计算机吗体会,听华应龙老师课有感
  16. The Auto-extending innodb_system data file './ibdata1' is of a different size 6400 pages (rounded do
  17. 斐波那契数列之不死神兔
  18. 管理员必备的20个Linux系统监控工具
  19. RHEL6配置本地源
  20. HTML调用PHP的方法

热门文章

  1. CTF秀CRYPTO密码学签到
  2. 基于区块链/Hyperledger Fabric的商品交易溯源系统搭建步骤
  3. latex中生成表格形式的参考文献表
  4. 哔哩哔哩开源的flvjs
  5. verilog学习 | HDLBits:在线学习答案
  6. 自制蓝牙手机app控制stm8/stm32/C51板载LED
  7. 网红是完全从草根中产 的一群明星
  8. DRG六大指标详细解释
  9. signature=f2128b3abc60d1d4e8d89ffc1312678e,Processes of Glacial Erosion
  10. 豆瓣评分9.2,AI领域畅销书作者再出新作!