冒泡排序

冒泡排序的思想就是将相邻的两个位置的数据进行比较,如果前面位置的数据大于后面位置的数据,则将两位置的数据进行交换,未排序元素中最大的数便会像一个气泡一样一路向后冒,最后会将其放在未排序数据的末尾.使其成为已排序数据的首位,时间复杂度O(n^2),空间复杂度O(1) 。

import java.util.Arrays;

public class Test2 {

    public static void main(String[] args) {
        int[] a = {3, 8, 2, 4, 5};
        sort(a);
        System.out.println(Arrays.toString(a));
    }

    //冒泡排序:升序
    //1.比较数组中,两个相邻的元素,如果第二个数比第一个数小,我们就交换他们的位置
    //2.每一次比较,都会产生出一个最大,或者最小的数字
    //3.下一轮则可以少一次排序
    //4.依次循环,直到结束
    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;
    }
}

分析:
N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基本概念 (一)常见排序算法可以分为两大类: 1、比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能...
    那山的狐狸阅读 2,600评论 0 0
  • Java中的经典算法之冒泡排序(BubbleSort) 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:...
    longmingren123阅读 6,842评论 0 0
  • 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在...
    進擊_Caesar阅读 1,066评论 0 0
  • 冒泡排序 原理:比较相邻两个数,将较大的数移至右边。 思路: 比较相邻的元素。如果第一个比第二个大,就交换他们两个...
    f155b8f6e0ac阅读 3,153评论 0 1
  • 原理 比较两个相邻的元素,将值大的元素交换到右边 思路 依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在...
    赵哥窟阅读 2,773评论 0 2