选择排序
2020-02-08 04:23
127 查看
算法思想
(不断地选择剩余元素之中的最小者)
- 找到数组中最小的那个元素
- 将它与数组的第一个元素交换位置(如果第一个元素就是最小的元素,那么它就和自己交换)
- 在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置
- 如此往复,直到将整个数组排序
Java实现
- 源码
public class Selection { // 将a[]按升序排列 public static void sort(Comparable[] a) { int N = a.length;// 数组长度 for (int i = 0; i < N; i++) { // 将a[i]和a[i+1..N]中最小元素交换 int min = i;// 最小元素的索引 for (int j = i + 1; j < N; j++) if (less(a[j], a[min])) min = j; exch(a, i, min); } } private static boolean less(Comparable v, Comparable w) { return v.compareTo(w) < 0; } private static void exch(Comparable[] a, int i, int j) { Comparable t = a[i]; a[i] = a[j]; a[j] = t; } // 在单行中打印数组 public static void show(Comparable[] a) { for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); System.out.println(); } // 测试数组元素是否有序 public static boolean isSorted(Comparable[] a) { for (int i = 1; i < a.length; i++) if (less(a[i], a[i - 1])) return false; return true; } }
- 测试用例
public class Test { public static void main(String[] args) { String[] test = {"S", "O", "R", "T", "E", "X", "A", "M", "P", "L", "E"}; Selection.sort(test); assert Selection.isSorted(test); Selection.show(test); } }
- 测试结果
A E E L M O P R S T X
转载于:https://www.cnblogs.com/freelancy/p/8085579.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 选择排序和冒泡排序
- 选择排序
- Reading Club | 算法和人生选择:如何给洗好的袜子排序呢?
- 冒泡排序,选择排序,快速排序
- 【第16周 项目1(3) - 直接选择排序】
- 【经典算法】第二回:选择排序
- 算法——排序(五)选择排序
- 史上最简单!冒泡、选择排序的Python实现及算法优化详解
- 冒泡排序,插入排序,选择排序,希尔排序
- 订单用户表1(用户查询 、手机号查询 、选择城市 、选择状态、月份查询 、ID排序 、添加数据、批量发货、批量删除)
- 选择排序
- 冒泡、简单选择、快速插入排序回顾(待续)
- 第16周项目1 验证算法(5)直接选择排序
- java实现选择排序
- 【C语言】选择排序
- 第十六周 项目1 -(5)直接选择排序
- 数据结构与算法简记:选择排序
- 插入 | 希尔 | 冒泡 | 快速 | 选择 | 归并排序
- lintcode/leetcode由易至难第3题:选择排序
- 【python】python数据结构(五)——排序:直接选择排序