三大基础排序之——选择排序
来源:互联网 发布:网络安全保卫支队 编辑:程序博客网 时间:2024/06/05 15:10
前言:
“假设我是最大的”这是在我学习选择排序时听见最多的话,选择排序先拿一个数,假设这个数是最大(小)的数,用这个选定的数去跟后面的一次比较,若比这个数大(小),则交换位置。
基本原理:
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
实现步骤:
1、外循环:循环每个位置(其实就是选择了这个位置,然后用内循环去选择一个合适的数,放到这个位置);
2、内循环:在无序元素中选择一个合适的数;
3、把第二步选中的数据放到第一步选中的位置上就可以了;
时间复杂度及稳定性
时间复杂度:O(N^2)
稳定性:不稳定
分析:
时间复杂度:第一次内循环比较N - 1次,然后是N-2次,N-3次,……,最后一次内循环比较1次。
共比较的次数是 (N - 1) + (N - 2) + ... + 1,求等差数列和,得 (N - 1 + 1)* N / 2 = N^2 / 2。舍去最高项系数,其时间复杂度为 O(N^2)。
稳定性:
原始序列: 21,25,49,25*,16,08
排序后:08,16, 21,25*,25,49
两个25的位置变化了,所以是不稳定的
代码实现:
//从大到小排序 for (int i = 0; i < 9; i++) //外部循环,确定跑几趟 { int max = i; //假设待排元素是最大的 for (int j = i+1; j < 10; j++) //内部排序 { if (Array [max]<Array [j]) //如果定义的最大值比 要做较的数小 { max = j; //把该数的下标给max } } //交换 temp=Array[i]; Array=Array[max]; Array[max]=temp; }
总结
以上就是对选择排序的理解,共同学习,共同进步。
- 三大基础排序之——选择排序
- 三大基础排序之——插入排序
- 三大基础排序之——冒泡排序
- 十大排序算法之(三)——选择排序
- 九大排序之——选择排序
- 排序算法之——直接选择排序(三)
- 数据结构之排序(三)——简单选择排序
- 排序三之选择排序
- 三大简单排序算法——插入、选择、冒泡
- 三大排序:选择排序,冒泡排序,插入排序
- Java排序算法总结之(三)——选择排序(简单选择排序、堆排序)
- 算法基础—选择排序
- 排序算法之选择排序——简单选择排序
- 排序——选择排序之直接选择排序
- 黑马程序员—Java基础学习笔记之排序算法:选择排序&冒泡排序
- 排序法系列之三---选择排序
- 排序算法之三选择排序
- java排序算法之三选择排序
- Centos7安装配置tomcat 9并设置自动启动
- SpringBoot学习-(八)SpringBoot中的新注解
- 网络配置一
- 百度地图添加标记以及标签的点击
- Python之socket编程浅谈
- 三大基础排序之——选择排序
- 数据库的相关概念
- Test.6Vehicle
- 页面倒计时
- Java内部类详解
- 我的第一篇博客
- 拖放api示例
- WebService学习
- 计蒜客