基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。
过程:在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换 在剩余的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重复上述步骤,直到集合剩余1个元素
特性总结:
1. 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用
2. 时间复杂度:O(N^2)
3. 空间复杂度:O(1)
4. 稳定性:不稳定
- public class SelectSort {
- // 选择排序
- public static void selectSort(int[]arr){
- int length=arr.length;
- //本代码采用找剩余数据中最小值,再将最小值换到最前面的方法
- for(int i=0;i
- //假设此时数组中最小数据的下标是i
- int minIndex=i;
- //遍历i后面的数据,找到最小值
- for(int j=i+1;j
- if(arr[j]
- minIndex=j;
- }
- }
- swap1(arr,i,minIndex);
- }
- }
-
- //交换数组arr中m下标和n下标中的值
- private static void swap(int[]arr,int m,int n){
- int tmp=arr[m];
- arr[m]=arr[n];
- arr[n]=tmp;
- }
- }
-
相关阅读:
【目标检测】swin-transformer的学习
在阿里6年晋升3次,终获P8岗位,全靠这份PDF(Android研发岗)
Istio 入门(六):版本控制
代码随想录第六十天
python 函数参数 必选参数 默认参数 可变参数 关键字参数
营销建议 | 您有一份八月营销月历待查收! 建议收藏 !
LeetCode【4. 寻找两个正序数组的中位数】
第一章:绪论
(计算机组成原理)第五章中央处理器-第七节2:硬件多线程的基本概念
SpringBoot SpringBoot 开发实用篇 6 监控 6.2 SpringBoot Admin
-
原文地址:https://blog.csdn.net/q322359/article/details/132872694