排序算法之冒泡排序(Java描述)

在这里插入图片描述
冒泡动图

public class Sorting {
    
    
    public static void main(String[] args) {
    
    
        int[] a = {
    
     3, 12, 17, 33, 2141 };
        for (int i = 0; i < a.length - 1; i++) {
    
          //循环n-1次,每次将剩余数组的最大元素冒泡至剩余数组的最后,循环只进行n-1次,剩余的一个元素自然就会找到自己恰当的位置,***两两比较***
            for (int j = 0; j < a.length - i - 1; j++) {
    
         //每次只要比较除了排好序之外的遇到元素即可
                if(a[j]>a[j+1]) {
    
    
                    int temp = 0;
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
        
        for(int k = 0;k<a.length;k++) {
    
    
            System.out.print(a[k]+" ");
        }
    }
}

该算法每次排序都把数值最大的元素放在最后,这样每次只需要排序最大值元素前面的数值,减小了时间复杂度。
时间复杂度

最优的时间复杂度为: O(n);//好奇
最差的时间复杂度为:O( n^2 );
平均的时间复杂度为:O( n^2 );

空间复杂度

最优的空间复杂度就是开始元素顺序已经排好了,则空间复杂度为:0;
最差的空间复杂度就是开始元素逆序排序了,则空间复杂度为:O(n);
平均的空间复杂度为:O(1);

猜你喜欢

转载自blog.csdn.net/qq_45864370/article/details/108816596