首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法交租选择排序。
推荐维基百科的解释:选择排序
package Sort; /** * <p> * Description: 选择排序 * </p> * @author zhangjunshuai * @version 1.0 * Create Date: 2015年4月6日 上午11:12:37 * Project Name: ArithMetic * * <pre> * Modification History: * Date Author Version Description * ----------------------------------------------------------------------------------------------------------- * LastChange: $Date:2015年4月6日 $ $Author: zhangjunshuai$ $Rev:1.0 $ * </pre> * */ public class Selection { public static void sort(Comparable[] a){ for(int i=0;i<a.length;i++){ for(int j = a.length-1;j>i;j--){ if(less(a[j],a[i])) exch(a,j,i); } show(a); } } /** * <p> * 是否小于 * </p> * @author zhangjunshuai * @date 2015年4月3日 下午4:14:52 * @param v * @param w * @return */ private static boolean less(Comparable v,Comparable w){ return v.compareTo(w)<0; } /** * <p> * 交换函数 * </p> * @author zhangjunshuai * @date 2015年4月3日 下午4:14:32 * @param a * @param i * @param j */ private static void exch(Comparable[] a,int i ,int j){ Comparable t = a[i]; a[i] = a[j]; a[j] = t; } /** * <p> * 打印输出 * </p> * @author zhangjunshuai * @date 2015年4月3日 下午4:19:03 * @param a */ private static void show(Comparable[] a){ for(int i = 0; i < a.length; i++){ System.out.print(a[i] + " "); } System.out.println(); } public static void main(String[] args) { Integer[] a = {1,3,4,5,6,7,3,4,3,45,78,1,26,9,9,6,1}; sort(a); /*Character[] b = {'a','b','d','w','e','f','g','y','u','t','q','s','d','l','j','g','g','z'}; sort(b);*/ } }
执行结果(注意每次的顺序):
时间: 2024-11-08 11:02:27