2018.4.7选择排序
选择排序的思想:
所谓选择排序,就是在一组数中,每次选择一个当前剩余数据中最小的数据,并将之与剩余数据中的第一个数据交换位置即可。即每次选择最小的数据放入最前面。第i次排序是从剩余的length-i+ 1个数据中选择最小的数据,并于数组索引为i-1的数据交换位置。
public class Selection {
public static boolean less(Comparable w, Comparable v)//比较两个对象的大小,使用了多态的向上转型
{
return w.compareTo(v) < 0;//若w<v则返回真
}
public static void exch(Comparable[] a, int i, int j)//将换i,j的值
{
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static void sort(Comparable[] a)
{
int len, i, j, min;
len = a.length;//求出数组长度
for(i = 0; i < len; i++)
{
min = i;
for(j = i + 1; j < len; j++)
{
if(less(a[j], a[min]))
{
min = j;
}
}
exch(a, i, min);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] a = {"S","O","R","T","E","X","A","M","P","L","E"};
sort(a);
int i;
for(i = 0;i < a.length;i++)
{
System.out.print(a[i] + " ");
}
}
}