选择排序的Java实现

来源:互联网 发布:ubuntu安装monaco字体 编辑:程序博客网 时间:2024/05/21 17:54

选择排序是一种较为常见的排序方式,虽然其性能等各方面有些小问题,但是较为简单易于理解。

原理:

找出数组中的最小元素,然后和第一个元素交换。

在剩下的元素中找出最小元素(第二小)再和第二个元素替换;

循环此方法直至最后一个元素。


/** * 选择排序 * @author Youda * */public class Selection {/** * 将src数组按照升序排序 * @param src */public static void sort(Comparable[] src){int N = src.length; //数组长度for(int i=0;i<N;i++){int min = i;//默认最小位置为第一个for(int j=i+1;j<N;j++){if(less(src[j],src[min])){min = j;}}exchange(src,i,min);}}//比较x是否小于ypublic static boolean less(Comparable x, Comparable y){return x.compareTo(y)<0;}//交换 x,ypublic static void exchange(Comparable[] src,int x,int y){Comparable z = src[x]; src[x] = src[y]; src[y] = z;}public static void main(String[] args) {//测试数据String[] src = {"a","x","z","i","y","o","l","q","b","d","z","s","c"};Integer[] src1 = {100,99,70,98,99,101,3,6,676,45,25,77,80,1,0,46,28,11111,56666,22,6,8,29};sort(src); //排序sort(src1);for(String str:src){System.out.print(str+",");}System.out.println();for(int i=0;i<src1.length;i++){System.out.print(src1[i]+",");}}}



运行结果: