选择排序
时间复杂度是O(n²)
空间复杂度:O(1)
选择排序的核心思想:
两层循环
外层循环: 遍历数组,并假定一个最小数的下标,即下标为min = i.在内层循环之后,将array[i]和array[min]交换位置
内层循环: 遍历i之后的元素,比较array[i+1]和min,如果array[i+1]<array[i],将最小数的下标置为 i+1,经过一次遍历之后,最后的array[min] 就是本次取出来的最小的数
也就是说 在一次外层循环之后,就找到一个最小的数放在最前面,第二次循环找到第二小的数,以此类推!
伪代码实现:
1 publci static void selectedSort(int[] array){ 2 3 for(int i=0;i<array.length;i++){ 4 5 int min = i; 6 for(int j=i+1;j<array.length;j++){ 7 if(array[j]<array[min]){ 8 9 min = j; 10 } 11 12 } 13 //将最小数交换到最前面 14 exchange(array,i,min); 15 16 } 17 18 }