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

排序算法-选择排序(Java)

选择排序

选择排序 (selection sort)的工作原理非常直接:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序区间的末尾。

算法原理

排序数组:(2 4 3 1 5 2)

  1. 2 4 3 1 5 2):2依次和4 3 1 5 2比较, i f ( 2 > o t h e r ) ⇒ i n d e x = m i n I n d e x if(2>other) ⇒ index=minIndex if(2>other)index=minIndex,比较完后,交换元素位置。
  2. (1 4 3 2 5 2):4依次和3 2 5 2比较,同理得到最小元素的index,比较完后,交换元素位置。
  3. (1 2 3 4 5 2):3依次和4 5 2比较,同理,交换元素位置。
  4. (1 2 2 4 5 3
  5. (1 2 2 3 5 4
  6. (1 2 2 3 4 5

💡Idea

根据上述推导过程,可以使用 f o r for for嵌套循环

  1. 外层用于遍历每个比较的元素
  2. 内层则用于控制剩下的元素区间(下划线)

T ( n ) = O ( n 2 ) T(n)=O(n^2) T(n)=O(n2)

Coding

public class bubbleSort {public static void main(String[] args) {int[] nums={1,4,6,4,5};bubbleSorted(nums);for(int i:nums){System.out.println(i);}}/*** 冒泡排序* @param nums*/public static void bubbleSorted(int[] nums){int n= nums.length;for(int i=n-1;i>0;i--){for(int j=0;j<i;j++){if(nums[j]>nums[j+1]){int tmp=nums[j];nums[j]=nums[j+1];nums[j+1]=tmp;   //大的向右边移动}}}}
}

更多有趣内容访问https://github.com/TheRainbow5

参考文献

[1] https://www.hello-algo.com/chapter_sorting/selection_sort/

http://www.lryc.cn/news/143772.html

相关文章:

  • SpringBoot 怎么返回html界面
  • watch computed 和 method
  • 数据结构,线性表有哪些
  • 服务间通过Feign相互调用报错,参数是MultiparFile、参数是POJO报错
  • Flutter系列文章-Flutter应用优化
  • opencv案例03 -基于OpenCV实现二维码生成,发现,定位,识别
  • 叠螺式污泥脱水机的要点及价格分析
  • Visual Studio中Linux开发头文件intellisense问题的解决办法
  • 如何以CPU方式启动Stable Diffusion WebUI?
  • HTTP 框架修炼之道 | 青训营
  • 【活动】怎么维护电脑?
  • Linux安装Docker
  • 极氪汽车的云资源治理细探
  • 设计模式之抽象工厂
  • 问道管理:数字经济概念走势强劲,竞业达、久其软件等涨停,观想科技等大涨
  • 14-redis
  • MySQL——基础——子查询
  • 业务系统架构实践总结
  • Linux学习之DNS服务的原理
  • 《Linux内核源码分析》(3)调度器及CFS调度器
  • Docker:如何删除已存在的镜像
  • Qt——Qt 开发中所涉及的所有控件(基本控件、容器控件、布局控件、高级控件、其他控件、多媒体控件、定制控件)
  • 基于Ubuntu坏境下的Suricata坏境搭建
  • vue3权限管理——(路由权限)动态路由设置
  • 小程序开发之登录授权
  • 批量根据excel数据绘制折线图
  • 无锁并发:探秘CAS机制的魔力
  • iOS App签名与重签名:从开发者证书到重新安装运行
  • vue项目,如何修改Element-Plus等UI组件库的样式,三种方式搞定!!!
  • httpd协议与apache