选择排序
从数组中选择最小的元素,将它与数组的第一个元素交换位置,然后再从数组剩下的元素中选择出最小的元素,将它和数组的第二个元素交换位置。不断这样操作,直到整个数组排序。
选择排序需要大约n*n/2次比较, 和约n次交换,它的运行时间与输入无关,这个特点使得它对一个排序数组也需要做这么多的比较和交换操作。
public class Sort{
public static void selectionSort(int []arr){
if(arr==null||arr.length<2)
return;
for(int i=0;i<arr.length-1;i++){
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
minIndex=arr[j]<arr[minIndex]?j:minIndex;
}
swap(arr,minIndex,i);
}
}
public static void swap(int[]arr,int minIndex,int i){
int tmp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=tmp;
}
}