当前位置:网站首页>选择排序
选择排序
2022-08-08 22:15:00 【LMJC】
介绍
思想: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始(末尾)位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法,如:{6, 6,2}在进行选择排序,第一次就将第一个6和最后一个2进行了交换,此时第一个6跑到了第二个6的后面,表示该排序不稳定。
排序算法是否稳定,是指排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序是否相同,相同则为稳定排序,否则为不稳定。
执行过程:
在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个 元素交换;
第二次遍历n-2个数,找到最小的数值与第二个元素交换;
…
第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。
图解:
平均时间复杂度:O(n2)
实现代码
public class SelectSort {
public static int[] selectSort(int[] sourceArray){
int[] arr = Arrays.copyOf(sourceArray,sourceArray.length);
//temp用来下面的交换的临时值
int temp;
for (int i = 0; i <arr.length-1 ; i++) {
//minIndex用来记录此次遍历过程中的最小值的下标
int minIndex = i;
for (int j = i+1; j <arr.length ; j++) {
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
// 进行交换
if(minIndex!=i){
temp = arr[i];
arr[i]=arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;
}
//测试
public static void main(String[] args) {
int[] arr = {
10,4,3,6,1,8,2,5,7,9,0};
System.out.println("选择排序前:"+Arrays.toString(arr));
System.out.println("--------------------");
int[] arr1 = selectSort(arr);
System.out.println("排序后:"+Arrays.toString(arr1));
}
}
截图
边栏推荐
- 炒股开户去哪里办理,网上客户经理开户安全吗
- Unity Text值递增或递减效果
- 嵌入式开发:提示和技巧——C 语言中要避免的8个保留字
- Node.js 回调函数来解决SQL语句与返回值的异步问题
- 2020-03-09
- 2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须
- “文化数字化战略新型基础设施暨文化艺术链生态建设发布会”成功召开
- Chrome代理管理器插件
- 网上开户佣金是怎么调低的?网上客户经理开户安全吗
- The principle of neural network deep learning - 2
猜你喜欢
国产GPU大厂景嘉微半年净利润1.25亿元 旗下产品大卖
cURL是什么?
Zero Digital Reports Digital Financial Innovation to the Secretary of Hainan Provincial Party Committee
基于阿里云的基础架构设施保障(二)IAAS云存储
Hands-on Deep Learning_Transposed Convolution
目标跟踪实战deepsort+yolov5(上)
Conformer papers and code parsing (on)
SaaS启动阶段增长指南(上)
嵌入式开发:提示和技巧——C 语言中要避免的8个保留字
【硬件通讯协议】IIC总线协议以及模拟(软件)IIC
随机推荐
深耕“有效私域”,雀巢集团携手腾讯重塑零售数字化体验
论网络安全的重要性
scala排序,sort,sorted,sortBy,sortWith
基于.NET6、FreeSql、若依UI、LayUI、Bootstrap构建插件式的CMS
2020-03-09
2020-03-09
项目规范化标准介绍及相关实践
2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须
BSV 中的零开销私人时间戳
Sentinel如何实现支持全局接口限流功能
主机测探与端口扫描
【硬件通讯协议】SIP总线协议以及模拟(软件)SPI
九大内置对象,四大作用域
奈雪在亏损,背后供应商赢麻了
【计网】(五)网络层首部
Unity添加程序集引用
C + +环境设置
SRv6故障管理
What is the cURL?
The principle of neural network deep learning - 2