思路:选择数组中的最左边的元素,下标为0,同时标记此元素为最小元素。将第二个元素与此元素比较,若小于最小元素,则它取而代之成为最小元素。后边的元素以同样的道理进行比较和标记,在完全遍历以后,将具有最小标记的元素和第0个元素进行交换。第二此遍历的时候则从第二个位置开始进行比较。
代码如下:
public class SelectSort {
public long[] a;
public int nElemt;
public void selectSort(){
int in,out,min;
for(out=0;out<nElemt-1;out++){
min=out;
for(in=out+1;in<nElemt-1;in++){
if(a[min]>a[in]){
min=in;
swap(out,min);
}
}
}
}
private void swap(int m,int n){
long temp=a[m];
a[m]=a[n];
a[n]=temp;
}
}
效率;
选择排序和冒泡排序进行了相同的比较次数,运行时间都为O(N2),但是交换次数很小。当元素个数很大时,比较次数是主要的。但是当元素个数很小时,选择排序更快。