选择排序基本原理
对于给定的一组记录,一般是数组中n个元素
n个元素最小要进行n-1轮比较
经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换;
紧接着对不包含第一个记录以外的其他元素进行第二轮比较,得到的最小记录与第二个记录进行位置交换;
重复该过程,直到进行比较的记录只有一个时为止;
完整的测试程序如下:
public class TestSort {
//写一个选择排序的方法
public static void selectSort(int[] a) {
int i;
int j;
int temp=0;
int flag=0;
int n=a.length;
for(i=0;i<n;i++) {
temp=a[i];
flag=i;
for(j=i+1;j<n;j++) {
if(a[j]<temp) {
temp=a[j];//记录下比当前值小的数值
flag=j;//记录下比当前值小的数的下标
}
}
//第一轮比较结束,已经记录下了最小值和最小值对应的下标
//将最小值和i所在位置的值进行交换
if(flag!=i) {
a[flag]=a[i];
a[i]=temp;
}
}
}
public static void main(String[] args) {
int i=0;
int a[]= {5,4,9,8,7,6,0,1,3,2};
selectSort(a);//调用函数,传的是引用,因此数据要跟着改变
//打印排序后的数组
for(i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
System.out.println("\n");
}
}