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

递归实现选择排序.

思路:

         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.kler.cn/a/147117.html

相关文章:

  • 模糊神经网络学习方法探讨
  • Ubuntu 的 ROS 操作系统 turtlebot3 导航仿真
  • C++ 内联函数
  • 如何进入python交互界面
  • 算法日记 26-27day 贪心算法
  • 【书生大模型实战营 闯关材料】入门岛:第4关 玩转HF/魔搭/魔乐社区
  • js执行异常处理 箭头函数 正则表达式
  • 二、Lua数据类型
  • 运维01:云计算
  • 华为ospf路由协议防环和次优路径中一些难点问题分析
  • 力扣算法练习BM50—两数之和
  • 五子棋游戏
  • 【Linux】bash 终端指令
  • pip install 使用清华镜像源
  • 相同JS代码,多次混淆加密能得到不同的结果吗?
  • C++之常用的拷贝和替换算法
  • 蓝桥杯day01——根据给定数字划分数组
  • 第二节HarmonyOS DevEco Studio创建项目以及界面认识
  • Android系统源码中,在手上没有源码的情况下,需要将编译好的二进制可执行文件放入系统中
  • Python基于机器学习模型LightGBM进行水电站流量入库预测项目源码+数据集+模型,含项目报告
  • 开源与闭源:数字时代大模型之辩
  • ArcGis如何用点连线?
  • 持续集成部署-k8s-高级调度-CronJob:定时任务的应用
  • linux的netstat命令和ss命令
  • 【Mysql】【DB】【sql】提高数据库搜索性能的经验
  • Nginx Openresty通过Lua+Redis 实现动态封禁IP