排序算法四 直接选择排序
来源:互联网 发布:初级软件开发面试 编辑:程序博客网 时间:2024/06/05 02:28
1、直接选择排序概念:
从无序区中选一个最小的元素直接放到有序区的最后。
直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。
2、直接选择排序特性:
时间复杂度:O(n^2)(最好时间复杂度:O(n^2) 最坏时间复杂度O(n^2) )
空间复杂度:O(1)
稳定性:不稳定
注:
(1)选择排序和冒泡排序的每一趟后,都有一个元素位于最终的位置。(最左或最右)
(2)选择排序过程中的比较次数与序列的初始状态无关,所有最好和最坏的时间复杂度都为O(n^2)
3、实现步骤:
设数组为arr[0...n-1]
1.初始化数组全为无序区arr[0...n-1]。令i=0
2.在无序区arr[0...n-1]中选取一个最小的元素,将其与arr[i]交换,交换之后arr[0...i]就形成了一个有序区。
3.i++并重复第二步直到i==n-1,排序完成。
例如:序列{38,97,26,19,38*,15}的直接选择排序过程如下图:
4、java代码实现
public void SelectSort(int[] arr){ int n = arr.length; for(int i = 0;i<n;i++){ int minIndex = i;//设置最小元素的位置 for(int j = i+1;j<n;j++){ if(arr[j]<arr[minIndex]){ minIndex = j; } } //将这个元素放到无序区的开头 int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; }}
1 0
- 排序算法四 直接选择排序
- 八大排序算法(四) 直接选择排序
- 直接选择排序算法
- 直接选择排序算法
- 直接选择排序算法
- 直接选择排序算法
- 直接选择排序算法
- 直接选择排序算法
- 排序算法-------直接选择排序
- 常用内部排序算法之四:简单选择排序、直接插入排序和冒泡排序
- 排序算法四:选择排序
- 排序算法(四) - 选择排序
- 白话经典算法系列之四 直接选择排序
- 排序算法---直接选择排序算法
- 常用算法-直接选择排序
- Java 直接选择排序算法
- java 直接选择排序算法
- 实现直接选择排序算法
- Android三种菜单介绍
- 欧拉工程第22题 文件中所有名字的得分之和是多少
- Android ANR日志
- 进程
- opengl库中gl glu glut glaux的区别
- 排序算法四 直接选择排序
- Keil 下载HEX文件,无需源代码。
- WSACreateEvent 事件使用
- Xcode基本操作
- Java中获取类的字节码文件的三种方式
- 深入DAO业务设计-设计分析实例
- java三目运算符
- 学习列表
- JAVA内部类的作用