C/C++选择排序算法

编程入门 行业动态 更新时间:2024-10-06 04:08:32

C/C++选择排序<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法"/>

C/C++选择排序算法

文章目录

  • 例题
  • 原理阐述
  • 代码实现
  • 总结

例题

原理阐述

从小到大排序,每次选择序列的最小的一个数;
将原来的序列A分割为排好序的序列a和未排序的序列b;
从未排好序的序列b中找到最小值,插入到排好序的序列a后面,形成从小到大的序列。
依次循环,直到最后b序列剩下最后一个数。

时间复杂度分析
大循环为n,n为A序列的长度,小循环为m,m的取值依次为:“n,n-1,n-2,…,n-i”。
n ∗ n = O ( n 2 ) n*n=O(n^2) n∗n=O(n2)

题目思路

以上面的例题为例,样例输入十个整数作为一个序列A。

先将序列A的第一个数作为最小值min,再遍历整个序列,找到比min还小的数,记录下这个最小值对应的下标,再交换这个最小值与序列的第一个数,使得A序列的第一个数为最小值,此时A被分为已排序序列a,未排序序列b。
重复上面的操作,直到b为最后一个数。

代码实现

#include<iostream>
using namespace std;
int main () {int a[10];for(int i=0;i<10;i++)cin>>a[i];//选择排序//每次选择最小的一个数for(int i=0;i<10;i++){ int minNum=a[i];int k=0;for(int j=i;j<10;j++){if(minNum>=a[j]){minNum=a[j];k=j;}}int temp = a[i];a[i]=a[k];a[k]=temp;if(i==9)cout<<a[i];elsecout<<a[i]<<endl;}return 0;
}

总结

和冒泡排序类似,都是通过两层遍历。选择排序是每次找最小或者最大,并把它放到序列最前面,或者最后面。冒泡排序是通过两两交换,每次遍历也是确定序列的最大或最小值。两者对比来说,冒泡排序的交换平均频率比选择大的多,选择排序只需要找到最大或最小,再最后交换一次即可。冒牌则一直需要比较交换。

更多推荐

C/C++选择排序算法

本文发布于:2023-11-30 14:10:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1651088.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!