冒泡排序优化 _选择排序优化
//冒泡排序优化
public static void bubblePlusSort(int[] nums){
for(int i=0;i< nums.length;i++){
boolean exchange=true;
for(int j=1;j< nums.length-i;j++){
if(nums[j]<nums[j-1]){
swap(nums,j,j-1);
exchange=false;
}
}
if(exchange)return;
}
}
//选择排序
public static void selectSort(int[] nums){
int len=nums.length;
for (int i = 0; i < len-1; i++) {
int min=i;
for(int j=i+1;j<len;j++){
if(nums[min]>nums[j])min=j;
}
if(min!=i)swap(nums,min,i);
}
}
其实冒泡排序优化的核心就是增加了一个标记判断,如果内层循环没有进行一次交换,说明之后的就都有序了,那么内存循环判断完之后就可以返回了
选择排序的优化就是双指针,之前是每次遍历后找到一个最小值的下标,现在我们每次遍历完之后找到最小值的下标和最大值的下标,然后进行交换,这样明显速度很快