冒泡算法

强颜欢笑 提交于 2020-03-06 20:58:28

算法:1.依次和相邻的数进行比较,如果头一个数更大,则替换,直到最大的值放在末尾

时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:不稳定

package sort;

/**
 * 冒泡算法
 *
 * 遍历排序元素,找到最大值,并放到最未位置
 *
 * 空间复杂度0(1), 时间复杂度0(n2)
 *
 * 思考: 什么时候时间复杂度是 n
 *
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] a = {3,1,9,8,2,6,5,4,7};
        sort(a);
        print(a);
    }
    static void sort(int[] a){
        for(int i =a.length-1;i>0;i--){
            findMaxAndReplaceTo(a,8);
            print(a);
        }

    }

    static void findMaxAndReplaceTo(int[] a, int n){
        for(int i=0;i < n; i++){
            if(a[i] >a[i+1]) swap(a,i,i+1);
        }
    }

    static void swap(int[] a, int i ,int j){
        int temp = a[i];
        a[i]= a[j];
        a[j] = temp;
    }

    public static void print(int[] a){
        for(int i =0;i < a.length; i ++){
            System.out.print(a[i] + " ");
        }
        System.out.println();
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!