冒泡排序

冒泡排序

两层循环,外层冒泡轮数,内层依次比较。

时间复杂度O(n2),代码量小,效率较低,小数据好用。

public static void main(String[] args) {
        int[] ints = {1,24,53,42,5};
        int[] sort = sort(ints);
        System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
    //临时变量
    int temp = 0;
    //外层循环,判断我们这个要走多少次;
    for (int i = 0; i < array.length-1; i++) {
        //内层循环,比价判断两个数,如果第一个数,比第二个数大,则交换位置
        for (int j = 0; j < array. length-1-i ; j++) {
            if (array[j+1]<array[j]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }
	return array;
}

优化:设置flag,在某一轮冒泡中,未出现交换,则直接结束循环。

public static void main(String[] args) {
        int[] ints = {1,24,53,42,5};
        int[] sort = sort(ints);
        System.out.println(Arrays.toString(sort));
}
//增加了flag优化
public static int[] sort(int[] array){
    //临时变量
    int temp = 0;
    //外层循环,判断我们这个要走多少次;
    for (int i = 0; i < array.length-1; i++) {
        boolean flag=false;//通过fLag标识位减少没有意义的比较
        //内层循环,比价判断两个数,如果第一个数,比第二个数大,则交换位置
        for (int j = 0; j < array. length-1-i ; j++) {
            if (array[j+1]<array[j]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                flag = true;
            }
        }
        if (flag == false){
        	break;
        }
    }
	return array;
}

posted on 2024-07-22 15:28  7007x  阅读(28)  评论(0)    收藏  举报