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

郑州做网站报价站域名多少钱综合性门户网站有

郑州做网站报价站域名多少钱,综合性门户网站有,怎么做服装外贸网站,购物网站的排版一、什么是选择排序? 定义:选择排序是一种简单直观的排序算法,每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。 类比:就像整理书架时,每次都从剩下的书中找到最小的…

一、什么是选择排序?

  • 定义:选择排序是一种简单直观的排序算法,每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。

  • 类比:就像整理书架时,每次都从剩下的书中找到最小的那本,放在正确的位置。

  • 特点
    • 时间复杂度为 (O(n^2)),适合小规模数据。

    • 交换次数少,性能比冒泡排序略优。


二、选择排序的步骤

  1. 遍历未排序部分
    • 从数组的第一个元素开始,假设当前位置为最小值。

  2. 寻找最小值
    • 在未排序部分中找到最小值的索引。

  3. 交换元素
    • 将找到的最小值与未排序部分的第一个元素交换位置。

  4. 重复过程
    • 缩小未排序部分的范围,直到整个数组有序。


三、代码实现

1. 升序排序
#include <iostream>
using namespace std;int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < n - 1; i++) {int minIndex = i; // 假设当前未排序部分的第一个元素是最小值// 寻找未排序部分的最小值索引for (int j = i + 1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}// 交换最小值到已排序部分的末尾swap(arr[i], arr[minIndex]);}// 输出排序后的数组for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0;
}

运行结果

11 12 22 25 64

2. 降序排序
#include <iostream>
using namespace std;int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < n - 1; i++) {int maxIndex = i; // 假设当前未排序部分的第一个元素是最大值// 寻找未排序部分的最大值索引for (int j = i + 1; j < n; j++) {if (arr[j] > arr[maxIndex]) {maxIndex = j;}}// 交换最大值到已排序部分的末尾swap(arr[i], arr[maxIndex]);}// 输出排序后的数组for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0;
}

运行结果

64 25 22 12 11

四、代码解析

  1. 外层循环

    • 控制已排序部分的边界(i 表示当前已排序部分的末尾)。

  2. 内层循环

    • 在未排序部分(从 i+1n-1)中寻找最小值(或最大值)的索引。

  3. 交换操作

    • 将找到的最小值(或最大值)与未排序部分的第一个元素交换。


五、时间复杂度分析

  • 时间复杂度:(O(n^2))(无论最好或最坏情况)。

  • 交换次数:(O(n))(比冒泡排序少,性能略优)。


六、竞赛注意事项

  1. 数据范围
    • 如果 n 超过 10000,选择排序可能超时,建议使用 std::sort

  2. 代码简洁性
    • 选择排序代码简单,适合快速实现小规模排序。

  3. 优化策略
    • 如果已排序部分和未排序部分同时寻找最小值和最大值,可以减少循环次数(进阶技巧)。


七、综合练习

练习 1:排序学生成绩

输入 n 个学生的成绩,按升序输出。

参考代码

#include <iostream>
using namespace std;int main() {int n;cin >> n;int scores[n];for (int i = 0; i < n; i++) {cin >> scores[i];}// 选择排序for (int i = 0; i < n - 1; i++) {int minIndex = i;for (int j = i + 1; j < n; j++) {if (scores[j] < scores[minIndex]) {minIndex = j;}}swap(scores[i], scores[minIndex]);}for (int i = 0; i < n; i++) {cout << scores[i] << " ";}cout << endl;return 0;
}

练习 2:找出第 k 小的元素

输入一个数组和整数 k,使用选择排序找到第 k 小的元素。

参考代码

#include <iostream>
using namespace std;int main() {int n, k;cin >> n >> k;int arr[n];for (int i = 0; i < n; i++) {cin >> arr[i];}// 选择排序,只排到第 k 个元素for (int i = 0; i < k; i++) {int minIndex = i;for (int j = i + 1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}swap(arr[i], arr[minIndex]);}cout << "第 " << k << " 小的元素:" << arr[k-1] << endl;return 0;
}

八、总结

  1. 选择排序的核心是“选择最小值,交换位置”。

  2. 时间复杂度为 (O(n^2)),适合小规模数据。

  3. 竞赛建议:优先使用 std::sort,但选择排序是理解排序原理的基础。

  4. 适用场景:数据量小、代码简洁性要求高时。


文章转载自:

http://R6S98h0g.fthcq.cn
http://NmyII8NT.fthcq.cn
http://ZqXDw7kr.fthcq.cn
http://UR3JyoXS.fthcq.cn
http://Zm0sR8BP.fthcq.cn
http://0wmpxwdu.fthcq.cn
http://ZrPDTjrW.fthcq.cn
http://UxA9Q28n.fthcq.cn
http://LguxRlsQ.fthcq.cn
http://RJdUt6Fg.fthcq.cn
http://gyePc93s.fthcq.cn
http://HT5euwjP.fthcq.cn
http://gXm1StoR.fthcq.cn
http://ojF0kOSu.fthcq.cn
http://mUeFMGDX.fthcq.cn
http://KJAHZQ9S.fthcq.cn
http://tpXsj8si.fthcq.cn
http://CcDwN4KV.fthcq.cn
http://RLP1MewM.fthcq.cn
http://o89cVjyz.fthcq.cn
http://O5pzEWbi.fthcq.cn
http://4OpfBA3r.fthcq.cn
http://XFcKXcrR.fthcq.cn
http://wHcstieN.fthcq.cn
http://nVXNBF3c.fthcq.cn
http://3VX86gSy.fthcq.cn
http://8h01oR9r.fthcq.cn
http://cIuo3eTH.fthcq.cn
http://Ftmqinol.fthcq.cn
http://Of62RnVd.fthcq.cn
http://www.dtcms.com/wzjs/720956.html

相关文章:

  • 郴州网站维护网络是哪家公司最好
  • 郑州三牛网站建设单页面视频网站
  • 建设网站技术公司电话号码网站建设商务合同范本
  • 佛山大良网站建设招聘河南省建筑网官网
  • 重庆夹夹虫网络公司网站建设贵州网站制作公司
  • 苏州网站建设公司鹅鹅鹅数字媒体艺术设计主要学什么
  • 如何建自己网站做淘宝客网站的建设费用预算
  • 网站建设与网页设计 视频教程厂家招商网
  • 网站文字规范鹰潭市网站建设公司
  • 男女做某事网站网页设计好的网站
  • 阿里云服务器上如何做网站做网站收款支付宝接口
  • 企业备案增加网站背景图在线制作
  • 兰州做网站价格百度网址安全中心怎么关闭
  • 网站服务器端口号是什么网络营销的模式有哪些
  • 毕业设计代做网站多少钱百度seo多久能优化关键词
  • 内部网站搭建网站运维是做什么的
  • 网站模糊效果咨询学校网站开发费用
  • 网站全屏图片怎么做电子商务网站设计与规划
  • 贸易网站设计丝绸之路网站平台建设
  • 招投标网站建设自己做的网站怎么上传到域名
  • 临沂做拼多多网站佛山搜索seo优化排名
  • 在什么网站可以自承包活来做设计方案表网站名称
  • 网站建设管理员工工资多少网站建设公司的名字
  • 备案不关闭网站的方法织梦网站系统删除
  • 企业建站公司哪里有一般网站尺寸
  • 网页制作基础教程图片合肥全网优化
  • 建设一个人才网站需要的人才林壑地板北京网站建设
  • 小蘑菇网站建设下载教育类网站前置审批系统 用户登录
  • 陕西省两学一做网站成立公司合作协议书范本
  • 免费网站seo优化数字营销seo