选择排序及其优化

目录

思想:

代码:

代码优化:

需要注意的特殊情况:

 可能出现的所有特殊情况:

优化完成代码:


思想:

每一次遍历数组,选择出最大或最小的数,将其与数组末尾或首位进行交换。

代码:

void Swap(int* a, int* b)
{int c = *a;*a = *b;*b = c;
}void Choosesort(int* a, int n)
{int* end = a + n - 1;for (int i = 0; i < n; i++){int* max =a;for (int j = 0; j < n-i; j++){if (*(a + j) > *max){max = a + j;}}Swap(max, end-i);}	
}

代码优化:

优化内容:每一次同时选择出最大与最小。

需要注意的特殊情况:

这些情况会出现错误,为什么错,请读者自己进行遍历。同时也提醒读者,在进行排序时,各种排序出现的问题与此基本相同。大多出现在交换数据的地方!

为了避免这种错误,我们需要进行特殊处理:

 

 可能出现的所有特殊情况:

if (begin < end)
{if(*max == *(a + begin) && *min == *(a + end)){Swap(a + begin, a + end);}else if(*max==*(a+begin) && *min!= *(a + end)){Swap(max, a +end);Swap(min, a + begin);}else{Swap(min, a +begin);Swap(max, a + end);}
}

优化完成代码:

void Choosesort(int* a, int n)
{for (int i = 0; i < n; i++){int end = n-1-i;int begin = i;int* max =a+i;int* min = a+i;for (int j = i; j < n-i; j++){if (*(a + j) >= *max){max = a + j;}if (*(a + j) <= *min){min = a + j;}}if (begin < end){if(*max==*(a+begin) && *min!= *(a + end)){Swap(max, a +end);Swap(min, a + begin);}else{Swap(min, a +begin);if (*(max) > *(a + end)){Swap(max, a + end);}}}}	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot下

springboot 常用注解介绍 按需开启自动配置项特征介绍 自动配置原理 静态资源配置原理解析 rest风格请求映射 自定义入参的converter实现 springbootApplication启动流程 启动类 一些操作的赋值 启动器类型赋值 用加载器加载接口的实现类 刷新上下文

npm镜像源证书过期问题解决

title: npm镜像源证书过期 search: 2024-02-29 文章目录 Failed to check for updates 问题ERR_PNPM_NO_PKG_MANIFESTnpm缓存清除指令权限不足导致删除不了解决方案npm创建基础配资文件 Failed to check for updates 问题 错误描述如上 检查完 node,vue,npm 的版本后都没啥问…

css3之3D转换transform

css3之3D转换 一.特点二.坐标系三.3D移动&#xff08;translate3d)1.概念2.透视&#xff08;perpective)(近大远小&#xff09;&#xff08;写在父盒子上&#xff09; 四.3D旋转&#xff08;rotate3d)1.概念2.左手准则3.呈现&#xff08;transfrom-style)&#xff08;写父级盒子…

价值1万元的定制版跑分源码 微信支付宝跑分源码,微信支付宝跑分源码

价值1万元的定制版跑分源码 微信支付宝跑分源码&#xff0c;微信支付宝跑分源码|开代理|自动抢单接单。 此类“跑分”操作究竟是如何运作的呢?以一项“为游戏平台提供微信充值接口”的项目说明来举例:用户成功注册并进一步完善用户信息后&#xff0c;就可以抢单&#xff0c;抢…

ESP8266

一、简介 ESP8266:芯片 ESP8266-NodeMCU:方便对ESP8266芯片操作。 模块内嵌TCP/IP协议栈&#xff0c;可以实现串口、WIFI之间的数据转换传输。 产品特性 支持无线802.11b/g/n三种标准 支持STA/APSTAAP三种工作模式 支持TCP/IP协议栈&#xff0c;支持多路TCP Client连接 内置…

阿里云优惠券一键领取入口分享

阿里云作为国内领先的云计算服务提供商&#xff0c;以其稳定、高效的服务赢得了广大用户的信赖。为了吸引更多用户上云&#xff0c;阿里云经常推出各种优惠活动&#xff0c;其中就包括阿里云优惠券。本文将为大家分享阿里云优惠券一键领取入口&#xff0c;帮助大家快速获取优惠…

【ONE·基础算法 || 链表】

总言 主要内容&#xff1a;编程题举例&#xff0c;熟悉理解单链表类题型。       文章目录 总言1、链表2、两数相加&#xff08;medium&#xff09;2.1、题解 3、两两交换链表中的节点&#xff08;medium&#xff09;3.1、题解 4、重排链表&#xff08;medium&#xff09;4…

快讯!TiDB v8 发版!超硬核 v8 引擎!

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品。 具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数…

【键值皆有序map 线段树 数学 】100240. 最小化曼哈顿距离

本文涉及知识点 键值皆有序map 线段树 数学 LeetCode100240. 最小化曼哈顿距离 给你一个下标从 0 开始的数组 points &#xff0c;它表示二维平面上一些点的整数坐标&#xff0c;其中 points[i] [xi, yi] 。 两点之间的距离定义为它们的曼哈顿距离。 请你恰好移除一个点&am…

PySpark的学习

一. 什么是PySpark 使用过的bin/pyspark 程序 , 要注意 , 这个只是一个 应用程序 , 提供一个 Python 解释器执行环境来运行 Spark 任务 现在说的 PySpark, 指的是 Python 的运行类库 , 是可以在 Python 代码中 :import pyspark PySpark 是 Spark 官方提供的一个 Python …

后端SpringBoot+Mybatis 查询订单数据库奇怪报错加一

排错过程&#xff1a; 看报错意思是SQL语句存在错误&#xff0c;然后使用图形化工具运行这个SQL语句 其实这里稍微细心想一下就能发现问题&#xff0c;但是当时没深入想&#xff0c;就觉得order表前加了数据库名字影响不大&#xff0c;所以感觉SQL语句是没问题的&#xff0c;然…

C语言 05 变量与常量

变量 变量就像在数学中学习的 x&#xff0c;y 一样&#xff0c;可以直接声明一个变量&#xff0c;并利用这些变量进行基本的运算&#xff0c;声明变量的格式为&#xff1a; 数据类型 变量名称 初始值;&#xff08;其中初始值可以不用在定义变量时设定&#xff09; 是赋值操作…

HarmonyOS实战开发-switch、chart组件的使用

介绍 本篇Codelab基于switch组件和chart组件&#xff0c;实现线形图、占比图、柱状图&#xff0c;并通过switch切换chart组件数据的动静态显示。要求实现以下功能&#xff1a; 实现静态数据可视化图表。打开开关&#xff0c;实现静态图切换为动态可视化图表。 相关概念 swit…

3. WiFi基本原理

1. WiFi简介 WiFi的全称是Wireless Fidelity。它是一种无线网络通信技术&#xff0c;由Wi-Fi联盟拥有&#xff0c;目的是改善基于IEEE 802.11标准的无线网络产品之间的互通性&#xff0c;允许电子设备在没有物理连接的情况下进行高速数据传输。此外&#xff0c;WiFi也被视为IE…

Holiday Notice

Holiday Notice 放假通知 要是每个公司都能放假放的多&#xff0c;把加班折算放假落实到位&#xff0c;还怕我们不努力干活&#xff0c;巴不得把全年都干完了&#xff0c;然后休息。

python爬取B站视频

参考&#xff1a;https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题&#xff0c;请求头需要修改&#xff0c;上代码&#xff1a; import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…

区间预测 | Matlab实现带有置信区间的GRNN广义回归神经网络时间序列未来趋势预测

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 Matlab实现带有置信区间的GRNN广义回归神经网络时间序列未来趋势预测 带有置信区间的GRNN(广义回归神经网络)时间序列未来趋势预测结合了广义回归神经网络(GRNN)的预测能力和置信区间的统计度量,以提供对未来…

云备份项目认识、环境搭建以及所使用的库的介绍

一、云备份认识 将本地计算机一个受监管的文件夹的文件上传到服务器中&#xff0c;有服务器组织&#xff0c;客户端可以通过网页将文件查看并且下载下来&#xff0c;下载过程支持断点续传功能&#xff0c;并且服务器会对上传的文件进行热点管理&#xff0c;长时间没人访问的文…

内网穿透时报错【Bad Request This combination of host and port requires TLS.】的原因

目录 前言&#xff1a;介绍一下内网穿透 1.内网直接https访问&#xff08;可以正常访问&#xff09; 程序配置的证书 2.内网穿透后,通过外网访问 3.原因 4.内网非https的Web应用&#xff0c;使用https后&#xff0c;也变成了https访问 5.题外话 感觉自己的web应用配置了…

使用 Seq2Seq 模型进行文本摘要

目录 引言 1 导入数据集 2 清洗数据集 3 确定允许的最大序列长度 4 选择合理的文本和摘要 5 对文本进行标记 6 删除空文本和摘要 7 构建模型 7.1 编码器 7.2 解码器 8 训练模型 9 测试模型 10 注意 11 整体代码 引言 文本摘要是指在捕捉其本质的同时缩短长文本的…