选择排序法将数组元素分为有序区、无序区,其主要思想是:
每次选取待排序列表中元素的最小值,放在已排序过的列表中。直到排序完成。
第一次从a[0]~a[n-1]中选择最小值,与a[0]进行交换;
第二次从a[1]~a[n-1]中选择最小值,与a[1]进行交换;
……第i次从a[i-1]~a[n-1]中选择最小值,与a[i-1]进行交换;
……第n-1次从a[n-2]~a[n-1]中选择最小值,与a[n-2]进行交换。
public class Select {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = {1,8,4,6,5};
Select2 select = new Select2();
select.sort(a);
for(int i=0;i<a.length;i++){
System.out.print(" "+a[i]);
}
}
}
class Select2{
public void sort(int arr[]){
int temp=0;
for(int i=0;i<arr.length-1;i++){
//本次循环的最小值 arr[i]
int min=arr[i];
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(min>arr[j]){
min=arr[j];
minIndex=j;
}
}
//退出当前循环,找到本次的最小值,将其交给i的位置
temp=arr[minIndex];
arr[minIndex]=arr[i];
arr[i]=temp;
}
}
}
输出结果:
1 4 5 6 8