排序算法之冒泡排序(1)

1. 冒泡排序的原理

冒泡排序的思想就是:假设有n个数据 循环n次 两两比较 例如 1 3 4 2 7
1与3 先比较 小的在前大的在后 是顺序 所以不需要变,
指针后移 3与4相比 不变指针后移
4与2相比 反序 交换位置 变为2 4 也就是数组序列变为 1 3 2 4 7
指针后移 4与7比 正序 不变
这就是第一次排序 找到了最大的值放在最后
接下来还是这么比较 就找到了第二大的 放在倒数第二的位置 以此类推

如图:
在这里插入图片描述

2.代码如下

package com.study;

public class Sort {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        Sort.mp(a);

        for (int arry:a) {
            System.out.println(arry);
        }
    }

    //冒泡
     public static void  mp(int[] a){
        for (int i = 0;i < a.length-1;i++){
            for (int j = 1;j < a.length;j++){
                if(a[j-1] > a[j]){
                    int temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
                }
            }
        }
    }
}

3. 相关知识

  1. 时间复杂度时候O(n^2)
  2. 冒泡排序是稳定的排序算法
    所谓稳定 就是假设序列 12234 有相等的值2 经过排序后 a[1] 的2还是原来a[1]的2 不与a[2]的2 交换位置
  3. 空间复杂度是O(1)
  4. 冒泡排序是交换排序

4.优化

上述序列如果是有序的 但是冒泡排序还需要比较n遍,改进思路 设置一个变量 如果在一次比较过程中 没有发生位置的改变 说明序列有序 退出循环

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章