当前位置: 首页 > news >正文

递归实现选择排序.

思路:

         1.定位数组中的最大元素或最小元素

         2.将其与第一个元素交换位置

         3.接着将剩余未排序的元素中的最大值或最小值与第二个元素交换位置

         4.以此类推,直到排序完成

示例:

        [ 8, 5, 1, 9, 3 ]   //原始数组

        [ 1, 5, 8, 9, 3 ]   //3与8交换

        [ 1, 3, 8, 9, 5 ]   //3与5交换

        [ 1, 3, 5, 9, 8 ]   //9与8交换

        [ 1, 3, 5, 8, 9 ]   //排序完成后的数组

代码:

#include <iostream>
using namespace std;
void selectionSort(int arr[], int n)
{//当数组大小为0或1时直接返回if (n <= 1) {return;}//找到未排序部分最小元素的索引int minIndex = 0;for (int i = 1; i < n; i++) {if (arr[i] < arr[minIndex]) {minIndex = i;}}//将最小元素与开头的元素交换位置swap(arr[0], arr[minIndex]);//递归的对剩余元素排序selectionSort(arr + 1, n - 1);//arr + 1 将指针后移一位,n - 1排除排序的元素
}int main()
{//初始化一个数组int arr[] = { 7,2,1,8,4,9 };//n的大小int n = sizeof(arr) / sizeof(arr[0]);//调用函数selectionSort(arr, n);//输出排序后的数组for (int i = 0; i < n; i++) {cout << arr[i] << " ";}return 0;}

http://www.lryc.cn/news/249851.html

相关文章:

  • Node.js【文件系统模块、路径模块 、连接 MySQL、nodemon、操作 MySQL】(三)-全面详解(学习总结---从入门到深化)
  • 公司的销售经理面临哪些压力和挑战?
  • 【Linux系统编程】如何创建进程(什么是fork函数?进程创建的原理是什么?)
  • 【opencv】计算机视觉基础知识
  • Node——Node.js简介
  • 小型洗衣机什么牌子好又便宜?性价比迷你洗衣机推荐
  • INFINI Easysearch 与华为鲲鹏完成产品兼容互认证
  • 将linux服务器 设置成 proxy.SOCKS5 服务器
  • 无mac电脑生成uniapp云打包私钥证书的攻略
  • py 启动默认浏览器
  • scala可变参数列表使用
  • 经验分享:JMeter控制RPS
  • JavaScript中的for循环你用对了吗?
  • WordPress(10)解决中文连接问题
  • 2023年小美赛认证杯国际赛A题解题思路+数据分享版+部分代码
  • 删除list中除最后一个之外所有的数据
  • 北京筑龙助力中粮集团采购供应链改革加速跑
  • SpringBoot学习笔记-实现微服务:匹配系统(中)
  • 【复杂网络建模】——基于代理的社会网络建模(Agent-Based Modeling,ABM)[Python实现]
  • RSA实现中弱密钥漏洞分析(Analyzing Weak Key Vulnerabilities in RSA Implementation)
  • 【管理运筹学】背诵手册(六)| 图与网络分析(最大流问题,最小费用最大流问题)
  • C语言之结构体详解
  • 学习canvas
  • 浏览器的渲染原理
  • 从 JSON 转 Java 实体的多种方法详解
  • 数据库的多表查询(MYSQL)表表联立
  • P8650 [蓝桥杯 2017 省 A] 正则问题(dfs )
  • 【ESP32】手势识别实现笔记:红外温度阵列 | 双三次插值 | 神经网络 | TensorFlow | ESP-DL
  • No matching version found for @babel/compat-data@^7.23.5 处理
  • 手持机|三防智能手机_4寸/5寸/6寸安卓系统三防手机PDA手持终端方案