选择排序
2019-08-30 18:28
1616 查看
选择排序
分为已排区间(在左边)和未排区间(在右边)。每次从未排区间找出一个 min ,放到已排区间的末尾。
0-N-1 遍历一次找出最小值,放在 0 位上。
1 到 N-1 上遍历一次,找出最小值,放在 1 位置上。直到排好序。
时间复杂度是 O(N2),空间复杂度是 O(1)
思路:先思考临界条件,两层 for 循环(设置 i、j 两个变量,j ==i+1),寻找 min (三目交换符),调用交换方法。写交换方法。
package suanfa; public class xuanzhe { public static void selectSort(int[] arr) { if (arr == null || arr.length < 2) { //临界 return; } for (int i = 0; i < arr.length - 1; i++) { //两层for循环,i,j是 第 0 位,第 1 位。 int minIndex = i; //假设 第0 位的为 min for (int j = i + 1; j < arr.length; j++) { minIndex = arr[j] < arr[i] ? j : minIndex; //j位置小于i,则min==j,否则原地不动 } swap(arr, i, minIndex); } } public static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } public static void main(String[] args) { int[] arr = { 1, 8, 56, 984, 14, -84 }; System.out.println(java.util.Arrays.toString(arr)); selectSort(arr); System.out.println(java.util.Arrays.toString(arr)); } }
相关文章推荐
- 排序算法(三)选择排序
- 如何对exec sp_who2的结果进行选择和排序?
- C语言:从键盘输入十个数字进行排序(冒泡,选择,插入)
- 深入Java冒泡排序与选择排序的区别详解
- 基于比较的算法之二:选择排序
- Java基础04:选择排序;冒泡排序;折半查找;二位数组
- 第十六周项目1-(6)验证算法选择排序之堆排序
- NSTimeTnterval 用法系统排序,冒泡排序,选择排序比较
- 数据结构-选择排序
- 经典代码之冒泡排序,选择排序
- 选择排序——简单选择排序
- 冒泡排序,选择排序,快速排序,堆排序与二分查找算法
- 3.选择排序
- 四种简单的排序算法(插入、冒泡、选择排序、快速排序法)+汉诺塔算法
- 八大排序算法(1)_冒泡排序和选择排序
- 冒泡排序 选择排序 快速排序
- JQuery实现带排序功能的权限选择实例
- 我写的选择排序
- 选择排序,冒泡排序,快速排序(从小到大)
- 数据结构--选择排序(C语言)