Java教程

冒泡排序

本文主要是介绍冒泡排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

冒泡排序

冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!

冒泡排序的代码还是相当简单的,两层循环。外层冒泡轮数,里层依次比较。

我们看到嵌套循环,应该马上就可以得出这个算法的时间复杂度为O(n2)。

思考:如何优化?

ArrayDemo07

package array;
import java.util.Arrays;
public class ArrayDemo07 {
    public static void main(String[] args) {
        int[] arr = {4,3,2,1};

        sort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static int[] sort(int[] a){
        int temp = 0;       //交换变量容器

        //升序:把大的数往数组尾部移动,降序相反
        //外循环控制遍历次数 (控制把大的数往数组尾部移动的次数)
        //减去 1 :因为其他的数都遍历过了,也就确定了结果了,不需要遍历剩下的那个数了
        for (int i = 0; i < a.length - 1; i++) {

            //内循环控制每次遍历的比较次数
            //减去 i :因为每遍历一次就确定了一个较大数的位置(数组里前面没有比它更大的数了,就不需要再比较了)
            for (int j = 0; j < a.length - 1 - i; j++) {

                if (a[j] > a[j + 1]){   //比较判断两个元素:如果前一个大于后一个,则交换位置
                    temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1]= temp;
                }

            }
            
        }
        return a;   //把排序好的数组返回出去
    }
}

[1, 2, 3, 4]

这篇关于冒泡排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!