冒泡排序

冒泡排序

基本思想

  1. 将最大的向后放
  2. 遍历待排序序列从前向后,依次比较相邻的值,发现逆序则交换,使值大的向后排,双层for循环实现

实现步骤

  1. 从头部开始依次将数组相邻的两个数进行比较,若前面的数大于后面的数,则进行交换,
  2. 每遍历完成一趟就将最大的数移到了最后,小数就像鱼儿吐泡泡一样自动的浮向前面,
  3. 外层循环共遍历(数组的长度-1)次,每循环完成一次确定了一个最大值,
  4. 故内层循环每次遍历次数不同(数组长度-1-外层循环遍历的次数)则完成排序。

代码实现

public int[] sort(int[] arr){
    for(int i=0;i<arr.length-1;i++){
        for(int j=0;j< arr.length-i-1;j++){
            if(arr[j]>arr[j+1]){
                arr[j]=arr[j]^arr[j+1];
                arr[j+1]=arr[j+1]^arr[j];
                arr[j]=arr[j]^arr[j+1];
            }
        }
    }
   return arr;
}

复杂度与稳定性

稳定性:若数组中出现重复元素,若排序后重复元素还按照源数组中的先后顺序排列,则称之为稳定,否则为不稳定

in-place:不占用额外内存

n:数据规模

排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性
冒泡排序 O(n^2) O(n ) O(n^2) O(1) In-place 稳定

posted on 2021-05-02 20:24  凡人精灵  阅读(39)  评论(0编辑  收藏  举报

导航