【排序算法】选择排序法 & C++实现 | [实例过程分析]

简介: 选择排序法 & C++实现

●选择排序法


1.简要介绍

选择排序算法代码段:


for (int i = 0; i < len - 1; i++)
  {
        int temp;
  int k = i;
  for(int j=i+1;j<len;j++)
  { 
    if (a[k] > a[j])
    k = j;
  }
  if(k!=j)
  { 
    temp = a[i];
    a[i] = a[k];
    a[k] = temp;
  }
  }

2.图形化演示

随机找五个数使用快速排序法进行从小到大排序,如下图所示。


       在第一行中(k起始状态为0),①进行第一次将j(j=1)的值赋值给k(k=1),②进行第二次将j(j=2)的值赋给k(k=2),③进行第三次将j(j=4)的值赋值给k(k=4),最后进行两数的交换。


       在第二行中(k起始状态为1),①进行第一次将j(j=2)的值赋值给k(k=2),比较判断后,无其它操作,最后进行两数的交换。


       在第三行中(k起始状态为2),比较判断后,无其它操作。


       在第四行中(k起始状态为3),①进行第一次将j(j=4)的值赋给k(k=4),最后进行两数的交换;在第五行中,完成了最终的从小到大的排序。

0b7174b5e1b62103f708f13c65cc2b54_4fc6625e041d4d7f964d7487ea6ca396.png


3.代码如下

#include<iostream>
using namespace std;
#define size 10
class selectsort {
public:
  void selectsort_1(int a[],int len);
  void shownumber();
  int arr[size];
};
void selectsort::selectsort_1(int a[], int len)
{
  int temp;
  int i,j,k;
  for (i = 0; i < len - 1; i++)
  {
  k = i;
  for(j=i+1;j<len;j++)
  { 
    if (a[k] > a[j])
    k = j;
  }
  if(k!=j)
  { 
    temp = a[i];
    a[i] = a[k];
    a[k] = temp;
  }
  //测试代码
  cout << i + 1 << ":" << " ";
  for (int m = 0; m < len; m++)
  {
    cout << a[m] << " ";
  }
  cout << endl;
  }
}
void selectsort::shownumber()
{
  for (int i = 0; i < size; i++)
  {
  cout << this->arr[i] << " ";
  }
}
void text()
{
  selectsort ss;
  for (int i = 0; i < size; i++)
  {
  cin >> ss.arr[i];
  }
  ss.selectsort_1(ss.arr, size);
  ss.shownumber();
}
int main()
{
  text();
}

4.结果如下

765435ece3c0cd46539f47c496723cce_3e147ca8b1c94d0da62a31ddabe758e1.png



目录
相关文章
|
10月前
|
机器学习/深度学习 边缘计算 算法
NOMA和OFDMA优化算法分析
NOMA和OFDMA优化算法分析
498 127
|
7月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
419 3
|
7月前
|
存储 边缘计算 算法
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
142 0
|
9月前
|
编解码 算法 5G
MIMO雷达空间谱估计中Capon算法与MUSIC算法的对比分析及实现
MIMO雷达空间谱估计中Capon算法与MUSIC算法的对比分析及实现
842 2
|
9月前
|
人工智能 自然语言处理 算法
2025 年 7 月境内深度合成服务算法备案情况分析报告
2025年7月,中央网信办发布第十二批深度合成算法备案信息,全国389款产品通过备案,服务提供者占比超七成。截至7月14日,全国累计备案达3834款,覆盖文本、图像、音视频等多模态场景,广泛应用于生活服务、医疗、金融等领域。广东以135款居首,数字人、AI客服等C端应用主导,民营企业成主力,国企聚焦公共服务。随着AI政策推动,备案已成为AI产品合规上线关键环节。
|
8月前
|
机器学习/深度学习 算法 5G
【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究(Matlab代码实现)
【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究(Matlab代码实现)
545 0
|
11月前
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
283 17
|
9月前
|
搜索推荐
选择排序与其它排序算法比较
选择排序与冒泡排序同属O(n²)排序算法,但选择排序不稳定。相比堆排序,虽每轮均选最大元素,但选择排序基于线性结构,效率较低,而堆排序利用大顶堆结构提升了选择效率。
162 0
|
9月前
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
248 0
|
10月前
|
机器学习/深度学习 存储 算法
基于 C++ 布隆过滤器算法的局域网上网行为控制:URL 访问过滤的高效实现研究
本文探讨了一种基于布隆过滤器的局域网上网行为控制方法,旨在解决传统黑白名单机制在处理海量URL数据时存储与查询效率低的问题。通过C++实现URL访问过滤功能,实验表明该方法可将内存占用降至传统方案的八分之一,查询速度提升约40%,假阳性率可控。研究为优化企业网络管理提供了新思路,并提出结合机器学习、改进哈希函数及分布式协同等未来优化方向。
297 0