冒泡排序&选择排序

过去的,未来的
2019-12-07 / 0 评论 / 0 点赞 / 728 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2019-12-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

冒泡排序:平均时间复杂度:O(n2)

public static void BubbleSort1(int [] arr){

   int temp;//临时变量
   boolean flag;//是否交换的标志
   for(int i=0; i<arr.length-1; i++){   //表示趟数,一共 arr.length-1 次

       // 每次遍历标志位都要先置为false,才能判断后面的元素是否发生了交换
       flag = false;
       
       for(int j=arr.length-1; j>i; j--){ //选出该趟排序的最大值往后移动

           if(arr[j] < arr[j-1]){
               temp = arr[j];
               arr[j] = arr[j-1];
               arr[j-1] = temp;
               flag = true;    //只要有发生了交换,flag就置为true
           }
       }
       // 判断标志位是否为false,如果为false,说明后面的元素已经有序,就直接return
       if(!flag) break;
   }
}

选择排序:平均时间复杂度:O(n2)

public static void select_sort(int array[],int lenth){

   for(int i=0;i<lenth-1;i++){

       int minIndex = i;
       for(int j=i+1;j<lenth;j++){
          if(array[j]<array[minIndex]){
              minIndex = j;
          }
       }
       if(minIndex != i){
           int temp = array[i];
           array[i] = array[minIndex];
           array[minIndex] = temp;
       }
   }
}

0

评论区