选择排序是一种基本的排序算法,它每次选出最小的值放到数组的前面,比较简单,API如下
public void sort(Comparable[] a) //对a进行从小到大的排序
public void exch(Comparable[] a,int i, int j) //交换i和j的位置
public boolean less(Comparable p,Comparable q) //判断p是否小于q,小于返回true;
public void show(Comparable[] a) //用来遍历展示数组
public boolean isSorted(Comparable[] a) //判断数组是否已经有序
该算法可以对实现Comparable接口的任意对象进行排序
public class Selected{
//选择排序算法实现
public void sort(Comparable [] 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,min,i);//交换最小的和i的位置
}
}
//判断p是否小于q
public boolean less(Comparable p,Comparable q){
return p.compareTo(q) <0;
}
//交换数组中两个数据的值
public void exch(Comparable [] a,int i, int j){
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//显示数组
public void show(Comparable [] a){
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
}
//判断数组是否已拍好序
public boolean isSorted(Comparable[] a){
for(int i=1;i<a.length;i++)
if(less(a[i],a[i-1])
return false;
return true;
}
}