码迷,mamicode.com
首页 > 编程语言 > 详细

排序之冒泡排序

时间:2020-02-18 23:26:33      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:区间   boolean   for   OLE   空间复杂度   原理   时间   定义   oid   

  • 排序是将一串数据按照其某个或者某些关键字的大小进行递增或递减排列的操作我,通常指的排序是升序,排序方式是原地排序
  • 下面介绍下冒泡排序
  • 冒泡排序

    • 原理:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序
    • 冒泡排序是一个稳定的排序

    实现方式

    public void bubbleSort(int[] array) {
            for (int i = 0; i < array.length - 1; i++) {
                    //定义标志位来判断待排序区间是否有序
                    boolean isSorted = true;
                    for (int j = 0; j < array.length - 1 - i; j++) {
                            if (array[j] > array[j + 1]) {
                                    swap(array, j, j + 1);
                                    //只要发生交换说明待排序区间初始并不是有序
                                    isSorted = false;
                            }
                    }
                    if(isSorted) {
                            break;
                    }
            }
    }
    private void swap(int[] array, int i, int j) {
            int tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
    }

    性能分析

    • 时间复杂度:
      • 最好的情况:待排序有序时,时间复杂度为O(N)
      • 最坏的情况:待排序逆序时,时间复杂度为O(N^2)
      • 平均情况:时间复杂度 为O(N^2)
    • 空间复杂度:O(1)
    • 稳定性:稳定
    • 初始数据越接近有序,时间效率越高

    排序之冒泡排序

    标签:区间   boolean   for   OLE   空间复杂度   原理   时间   定义   oid   

    原文地址:https://blog.51cto.com/14233687/2472021

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!