常用算法Java实现之选择排序
2016-08-25 17:45
447 查看
选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序。
具体流程如下:
1、首先从原数组中选择最小的1个数据,将其置于第一个位置。
2、然后从剩下的数据中再选择其中最小的一个数据,并将其置于原数组的第二个位置。
3、不断重复选择和交换的过程,直至最后排序完成。
假如有初始数据:25 11 45 26 12 78。
1、第一轮排序,从原数组中选择出最小的数据,并将其置于第一个位置。第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
2、第二轮排序,从剩下的数据中再选择出其中最小的一个数据,并将其置于原数组的第二个位置。第二轮排序后,顺序为:[11, 12, 45, 26, 25, 78]。
.......
3、最终顺序为:[11, 12, 25, 26, 45, 78]。
选择排序是不稳定的排序。选择排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1) (选择排序只需要一个额外空间用于数组元素交换)。
Java 代码实现如下:(https://github.com/xbk417/algorithm)
具体流程如下:
1、首先从原数组中选择最小的1个数据,将其置于第一个位置。
2、然后从剩下的数据中再选择其中最小的一个数据,并将其置于原数组的第二个位置。
3、不断重复选择和交换的过程,直至最后排序完成。
假如有初始数据:25 11 45 26 12 78。
1、第一轮排序,从原数组中选择出最小的数据,并将其置于第一个位置。第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
2、第二轮排序,从剩下的数据中再选择出其中最小的一个数据,并将其置于原数组的第二个位置。第二轮排序后,顺序为:[11, 12, 45, 26, 25, 78]。
.......
3、最终顺序为:[11, 12, 25, 26, 45, 78]。
选择排序是不稳定的排序。选择排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1) (选择排序只需要一个额外空间用于数组元素交换)。
Java 代码实现如下:(https://github.com/xbk417/algorithm)
public void sort(int[] arr) { int tmp; // 第n轮排序过程中的较小数的下标 int small; for(int i = 0; i < arr.length - 1; i++) { small = i; // 找出最小的数的下标 for(int j = i + 1; j < arr.length; j++) { if(arr[j] < arr[small]) { small = j; } } // 交换 if(small != i) { tmp = arr[i]; arr[i] = arr[small]; arr[small] = tmp; } System.out.println(i + ":" + Arrays.toString(arr)); } }
相关文章推荐
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- Java学习资料-Java常用算法-选择排序算法
- 用JAVA实现排序算法之三:直接选择排序
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- 一步步学习数据结构和算法之选择排序效率分析及java实现
- 必须知道的八大种排序算法【java实现】(二) 选择排序,插入排序,希尔算法【详解】
- Java实现选择排序算法的实例教程
- 【Java 常用算法】选择排序
- 数据结构算法之排序系列Java、C源码实现(3)--直接选择排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- java语言实现常用算法(排序和查找)
- Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)
- 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
- 算法和数据结构-选择排序、插入排序及希尔排序 java实现
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- 一步步学习数据结构和算法之常用排序效率分析及java实现
- 常用算法Java实现之直接插入排序
- 算法代码实现之选择排序,Java实现
- java实现选择排序算法,sort