假定第一个数是最小,然后依次和后面的比较,一轮循环中找出最小的那个,交换,如此循环直到全部的数组都排序完,注意边界,只需要循环length-1次
public static void sort(int[] arr){
for (int i = 0 ; i < arr.length - 1;i++){
int minIndex = i;
int min = arr[i];
for (int j = i + 1; j < arr.length ;j++){
if (min > arr[j]){
minIndex = j;
min = arr[j];
}
if (minIndex != i){
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
}
选择与冒泡的区别和时间关系
当数量很大的时候,冒泡消耗的时间更多
因为冒泡一轮循环可能会有多次交换,比较只要大于,那就交换
选择不然,选择是记录下标,等全部完毕后才进行交换,只交换一次,如果下标没有变动,则不交换,时间上来说选择比冒泡短的很多