zoukankan      html  css  js  c++  java
  • 冒泡排序--java实现

    代码

    public int[] sort(int[] nums){
            int n=nums.length;
            int tmp;
            boolean flag=false;
            do{
                for (int i=0;i<n;i++)
                {
                    flag=false;
                    for (int j=0;j<n-i-1;j++)
                    {
                        if (nums[j]>nums[j+1]){
                            tmp=nums[j+1];
                            nums[j+1]=nums[j];
                            nums[j]=tmp;
                            flag=true;
                        }
                    }
                }
            }
            while (flag);
            return nums;
        }
    

    原理

    冒泡排序最核心的就是两个元素互换。举个例子(从小到大排序),直接说极端情况,数组里存了[7,6,5,4,3,2,1],泡泡从开始处产生,经过交换后,他会到最后一个位置,显然,每生成一个泡泡,数组的末尾必定会有序起来。具体要循环几次就要看什么时候整个数组有序,这里设置一个布尔标志位flag,也就是说如果在一轮循环中没有进入交换那个循环的话,就结束这个排序。

    复杂度

    时间复杂度O(n^2)
    内循环其实就是个等差数列,即1-n的和等于n(n-1)/2。所以时间复杂度是n^2
    空间复杂度O(1)
    申请了几个可数的变量,空间复杂度为1

    如有错误,欢迎指正。

  • 相关阅读:
    洛谷 P3366 【模板】最小生成树
    libfreenect
    openni2 和opencv读取数据
    kinect数据读取
    kinect for windows sdk
    caffe android lib
    Hlsl2glsl
    手势识别半自动标注结果视频
    CLM
    10位算法大师
  • 原文地址:https://www.cnblogs.com/funmary/p/13693752.html
Copyright © 2011-2022 走看看