选择排序
来源:互联网 发布:vpn代理软件破解版 编辑:程序博客网 时间:2024/05/21 16:55
//选择排序/* * 找到数组中最小的元素,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么就和它自己交换) * 在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置 * 如此往复,直到将整个数组排序 */package Algorithms;import java.util.Comparator;import edu.princeton.cs.algs4.Selection;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class P156_Selection {private P156_Selection(){}public static void sort(Comparable[] a){//将a[]按升序排列int n = a.length;for (int i = 0; i < n; i++){int min = i;for (int j = i + 1; j < n; j++){if (less(a[j], a[min])){min = j;}}exch(a, i, min);assert isSorted(a, 0, i);}assert isSorted(a);}public static void sort(Object[] a, Comparator comparator) { int n = a.length; for (int i = 0; i < n; i++) { int min = i; for (int j = i+1; j < n; j++) { if (less(comparator, a[j], a[min])) min = j; } exch(a, i, min); assert isSorted(a, comparator, 0, i); } assert isSorted(a, comparator); }//比较v和w大小private static boolean less(Comparable v, Comparable w){return v.compareTo(w) < 0;}private static boolean less(Comparator comparator, Object v, Object w){return comparator.compare(v, w) < 0;}//交换a[i]和a[j]private static void exch(Object[] a, int i, int j){Object swap = a[i];a[i] = a[j];a[j] = swap;}//确定是否排好序private static boolean isSorted(Comparable[] a){return isSorted(a, 0, a.length - 1);}private static boolean isSorted(Comparable[] a, int lo, int hi){for (int i = lo + 1; i <= hi; i++){if (less(a[i], a[i - 1])){return false;}}return true;}private static boolean isSorted(Object[] a, Comparator comparator){return isSorted(a, comparator, 0, a.length - 1);}private static boolean isSorted(Object[] a, Comparator comparator, int lo, int hi) { for (int i = lo + 1; i <= hi; i++) if (less(comparator, a[i], a[i-1])) return false; return true; }private static void show(Comparable[] a){for (int i = 0; i < a.length; i++){StdOut.println(a[i]);}}public static void main(String[] args) {// TODO Auto-generated method stubString[] a = StdIn.readAllStrings();P156_Selection.sort(a);show(a);}}
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 安装和使用spacemacs
- HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别
- 解决IDAPython: importing "site" failed.的问题
- Linux文本类用户类命令
- 枚举的影响和属性的遍历
- 选择排序
- cglib代理
- git命令速查
- 关于Android的问号?和@符号的用法
- jBPM4.4 eclipse插件安装
- ListView同时实现点击和长按事件
- 剑指Offer 10题 二进制中1的个数 Java版
- 鱼和熊掌不可兼得
- hdu4496 D-City 并查集