【排序算法】选择排序法 & 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



目录
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
63 4
|
2月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。
|
2月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
514 0
高精度算法(加、减、乘、除,使用c++实现)
|
2月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
21 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
2月前
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法
PID算法原理分析及优化
【10月更文挑战第6天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
|
2月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
45 0
|
2月前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
2月前
|
算法 安全 Go
Python与Go语言中的哈希算法实现及对比分析
Python与Go语言中的哈希算法实现及对比分析
41 0
|
2月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序