zoukankan      html  css  js  c++  java
  • java实现插入排序

    • 插入排序

            将数组看成是两部分,前部分是有序的,后部分是无序的。将无序的数组逐个插入有序的数组中。

    java实现

    public int[] insertSort(int[] a){
            int len = a.length;
            for(int i=1;i<len;i++){
                int key = a[i];
                System.out.println("key:"+key);
                int j=i-1;
                while(j>=0&&a[j]>key){  //注意使用while,不要使用for
                    a[j+1]=a[j];
                    j--;
                }
                a[j+1]=key;
            }
            return a;
        }
    • 冒泡排序

      两个指针,循环2遍,时间复杂度O(n2)

      java实现

    public int[] bubbleSort(int[] a){
            for(int i=a.length-1;i>=0;i--){
                for(int j=0;j<i;j++){
                    if(a[j]>a[j+1]){  
                        int temp=a[j+1];
                        a[j+1]=a[j];
                        a[j]=temp;
                    }
                }
                //System.out.println("a:"+i+":"+a[i]);
            }
            return a;
    }

      那么书上经常说的最佳的情况下,时间复杂度是O(n),是怎么得来的呢?答案:是对代码进行了优化的,当在一次遍历的时候,若排列有序了,就终止下一次遍历。

    public int[] bubbleSort(int[] a){
            boolean didSwap = false;
            for(int i=a.length-1;i>=0;i--){
                for(int j=0;j<i;j++){
                    if(a[j]>a[j+1]){  
                        int temp=a[j+1];
                        a[j+1]=a[j];
                        a[j]=temp;
                        didSwap = true;
                    }
                }
                if(didSwap==false){
                   break;
                }
            }
            return a;
    }    
  • 相关阅读:
    SSL证书指令
    重启机器解决SSL都要输入密码问题
    Nginx + Apache 反向代理
    Ubuntu Nginx安装
    Nginx配置文件详解
    Linux SSL 双向认证 浅解
    SSL 双向认证
    linux ssl 双向认证
    ubuntu apache2 ssl配置
    vi编辑器命令
  • 原文地址:https://www.cnblogs.com/lxq0309/p/3655365.html
Copyright © 2011-2022 走看看