排序之简单选择排序
2023-03-09 21:57:16 时间
前言
本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都有详细讲解,而我写这些博客只是记录自己学习过程,加入了一些自己的理解,同时也希望给别人提供帮助。
基本思想
选择排序的基本思想是每一趟在n-i+1(i=1,2,…,n-1)个记录中选取关键字最小的记录作为有序序列的第i个记录。我们这里先介绍的是简单选择排序法。简单选择排序法(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之,就是说一刚开始,从序列arr[0...n-1]选出最小的元素与第1个记录即arr[0]交换,再从arr[1...n-1]中选出最小的与arr[1]进行交换,arr[2...n-1]中最小的与arr[2]进行交换,以此类推,直至整个序列有序。
代码实现
/** * 简单选择排序 * @param arr */ public static void simpleSelectSort(int[] arr){ int len = arr.length; int index; // 记录arr[i...len-1]最小元素的下标 for(int i=0; i<len; i++){ index = i; for(int j=i+1; j<len; j++){ // 寻找arr[j...len-1]中最小元素 if(arr[index] > arr[j]){ index = j; } } swap(arr,i,index); // 交换arr[i]和arr[index] } }
执行过程模拟
上面的代码应该是很容易理解的,不过我们还是来模拟一下计算机执行的过程。
1)一开始,初始序列是{5,3,7,9,1,6,4,8,2},i=0,index=i=0,j=i+1=1,初始时,状态如下
2)i=0时
3)i=1时,同理,交换如下
4)i=2,3,4,5,6,7,8时,如下
至此,整个序列已经从小到大有序了;当然,从上面的模拟过程可以看出来,算法是可以些许改善的,改善的事就交给各位看官了,就当是拓展!
总结
简单排序算法还是比较简单的,没什么难点,希望大家能够在我提供的代码实现上进行些许优化,比如当i=index时,不需要优化,等等!
相关文章
- 当免疫检查点PD-1 遇上“魔剪CRISPR”| MedChemExpress
- 51单片机——LED基础
- (一)STM32L4(RT- Thread)——电机和蜂鸣器,独立按键,LED灯
- 前端号外—2022年最受欢迎居然是它,Node.js危已
- 蓝桥杯寒假集训第十天(豌豆杂交)
- 【愚公系列】2023年01月 Dapr分布式应用运行时-交通控制应用程序
- 电脑上最牛的下载神器,完美破戒-IDM多个版本(电脑、手机、浏览器插件都有)
- Flink中DataStream和Table互相转换
- docsify 文档站点生成器 – 建站工具
- 浏览器原理 - 事件循环
- 【Linux】Find命令使用
- vulntarget-k
- jackson反序列化器获取类型
- 中文互联网用“.中国”域名-极具影响力的国家域名!
- To C+To B双轮驱动,墨迹天气的转型启示录
- “中国四朵云”格局确立,但新的战役才刚开始
- 四种内部类你都了解了吗?
- 他们在云南乡村卖车:到村里发礼物,拿普洱抵车款
- 纳米微晶陶瓷芯:电子雾化行业的第二次“芯革命”
- 数据在内存中的存储方式--C语言版