
简单选择排序
发布日期:2021-05-06 23:22:43
浏览次数:14
分类:精选文章
本文共 1210 字,大约阅读时间需要 4 分钟。
3.简单选择排序
算法思想
每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。
步骤
(1)从待排序序列中,找到关键字最小的元素;
(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
(3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。
图示说明
实现
private static int[] selectSort(int [] array, int low, int high) { int index=0; int temp; int i=low,j; for(;iarray[j]) { index=j; } } temp=array[index]; array[index]=array[i]; array[i]=temp; } return array; }
简单分析
时间复杂度 O(n^2)
空间复杂度O(1)
不满足稳定排序
优化
思路就是同时从两边选最大值和最小值
实现
private static int[] selectSort2(int []array, int left , int right) { int i, min, max; int temp; for (; leftarray[max]){ max = i; } } if (min != left) //在原地就不交换 { temp = array[left]; array[left] = array[min]; array[min] = temp; if (max == left) //如果最大值在最左边,最左边已经存了最小值,所以最大值最新的下标应该是本来最小值的下标 { max = min; } } if (max != right) { temp =array[right]; array[right] = array[max]; array[max] = temp; } } return array; }
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月10日 01时46分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
OSI 7 层网络模型
2021-05-08
JDK 内置的多线程协作工具类的使用场景
2021-05-08
Java 中哪些对象可以获取类对象
2021-05-08
linux 的 sleep 命令
2021-05-08
11.2.6 时间值的小数秒
2021-05-08
Redis源码分析(七)--- zipmap压缩图
2021-05-08
大规模集群自动化部署工具--Chef的安装部署
2021-05-08
自定义Hive Sql Job分析工具
2021-05-08
【MySQL】(九)触发器
2021-05-08
关于Altium Designer 09导出BOM表不能正确分类问题
2021-05-08
Oracle 11G环境配置
2021-05-08
【Python】(十二)IO 文件处理
2021-05-08
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2021-05-08
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
2021-05-08
C语言的数值溢出问题(上)
2021-05-08
BottomNavigationView控件item多于3个时文字不显示
2021-05-08
函数指针的典型应用-计算函数的定积分(矩形法思想)
2021-05-08
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2021-05-08
用 wxPython 打印你的 App
2021-05-08
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2021-05-08