冒泡排序优化版

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lxlzy/article/details/81778346
  1. private static void sort(int array[])
  2. {
  3.    int tmp  = 0;
  4.    //记录最后一次交换的位置
  5.    int lastExchangeIndex = 0;
  6.    //无序数列的边界,每次比较只需要比到这里为止
  7.    int sortBorder = array.length - 1;
  8.    for(int i = 0; i < array.length; i++)
  9.    {
  10.        //有序标记,每一轮的初始是true
  11.        boolean isSorted = true;
  12.        for(int j = 0; j < sortBorder; j++)
  13.        {
  14.            if(array[j] > array[j+1])
  15.            {
  16.                tmp = array[j];
  17.                array[j] = array[j+1];
  18.                array[j+1] = tmp;
  19.                //有元素交换,所以不是有序,标记变为false
  20.                isSorted = false;
  21.                //把无序数列的边界更新为最后一次交换元素的位置
  22.                lastExchangeIndex = j;
  23.            }
  24.        }
  25.        sortBorder = lastExchangeIndex;
  26.        if(isSorted){
  27.            break;
  28.        }
  29.    }
  30. }
  31.  
  32. public static void main(String[] args){
  33.    int[] array = new int[]{3,4,2,1,5,6,7,8};
  34.    sort(array);
  35.    System.out.println(Arrays.toString(array));
  36. }
  37. }

参考链接:https://mp.weixin.qq.com/s/05TUWmBcq4ZoX3o0EEk38w

猜你喜欢

转载自blog.csdn.net/lxlzy/article/details/81778346