java 冒泡排序

思路

  1. 将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素;( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;)
  2. 对序列当中剩下的n-1个元素再次执行步骤1。
  3. 对于长度为n的序列,一共需要执行n-1轮比较

时间复杂度

最佳情况:T(n) = O(n) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2)

代码


import java.util.Arrays;

/**
 * 冒泡排序
 * @author remainsu
 * @version 1.0 2019-05-29
 */
public class BubbleSort {

    /**
     * 排序方法
     * @param arr 要排序的数组
     * @return toString 方便输出
     */
    public static String bubbleSort(int[] arr) {

        int tmp;
        //int count = 0;
        // 冒泡次数
        for(int a=0; a<arr.length-1; a++ ) {
            
            //count = a+1;
            boolean flag = false;
            // 比较未移动的
            for(int b=0; b<arr.length-a-1; b++ ) {
                // 后面的小于前面的,则互换位置
                if(arr[b+1] < arr[b]) {
                    tmp = arr[b];
                    arr[b] = arr[b+1];
                    arr[b+1] = tmp;
                    
                    //有数据移动,则状态标位true
                    flag = true;
                }
            }
            //没有数据移动,即数组已经有序,直接退出
            if(!flag) break;
        }
        
        //System.out.println("冒泡的次数:"+ count);
        return Arrays.toString(arr);
    }
    
    public static void main(String[] args) {
        
        int[] arr = {111, 3, 5, 52, 74, 312, 75, 3, 764, 3, 2111, 7, 31};
        //int[] arr = {1,2,10,3,4,5,6,7,8,9};
        
        System.out.println("排序后的数组:"+ bubbleSort(arr));
    }
    

参考

  1. https://blog.csdn.net/hellozhxy/article/details/79911867
Souviens Toi Que Tu Vas Mourir !
原文地址:https://www.cnblogs.com/remainsu/p/java-mao-pao-pai-xu.html