Java学习-数组09冒泡排序(重点)

冒泡排序(重点)

  • 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序算法,后面都会详细讲解!
  • 冒泡排序代码还是相当简单的,两层循环,外层为冒泡轮数,内层依次进行比较,编程江湖中人尽皆知
  • 我们看到嵌套循环,应该立马得出这个算法的时间复杂度为O(n2)。(关于时间复杂度我会在算法的文章里详细讲解)
  • 思考:如何进行优化?
package com.array.www;

import java.util.Arrays;

//冒泡排序
public class ArrayDemo09 {
    public static void main(String[] args) {
        //1.比较数组中两个相邻的元素,如果第一个元素比第二个元素大,则交换位置
        //2.每一次比较,都会产生一个最大或者最小的数字
        //3.下一轮比较则可以少一次排序
        //4.依次循环,直到结束!
        int[] a = {4,9,0,18,5,7,8,1,2,3,6};
        a = sortArray(a);
        System.out.println(Arrays.toString(a));//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18]
    }

    public static int[] sortArray(int[] a) {
        //临时变量
        int temp = 0;

        //外层循环,判断我们这个要走多少次(冒泡轮数)
        for (int i = 0; i < a.length - 1; i++) {
            //内层循环,比较判断两个相邻元素,如果第一个比第二个大,则交换位置
            //通过flag标志位减少没有意义的比较(如果已经是排好序的,就没必要进行比较了,直接跳出结束循环)
            boolean flag = false;
            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;
                    flag = true;
                }
            }
            if (flag == false) {
                break;
            }
        }
        return a;//这里再次强调,return一般用在外层方法中,返回一个结果给调用者
    }

}
posted on 2025-06-19 03:04  burgess0x  阅读(19)  评论(0)    收藏  举报