//选择排序 时间复杂度为O(N^2)
public static void sort(int[] arr){
for(int i=0;i<arr.length;i++){
int min = i;
//从第i个元素及第i个元素之后的元素中找寻最小值,并得到其下标位置
for(int j = i+1;j<arr.length;j++){
if(arr[j]<arr[min]) min = j;//执行(N-1)+(N-2)+(N-3)+....+2+1次比较,根据高斯算法(N-1+1)*N/2 = N^2/2次
}
//交换第i个元素与找寻到的最小值的位置
swap(arr,i,min); //执行N次交换
}
}
网友评论