zoukankan      html  css  js  c++  java
  • 排序之插入类排序

    1。直接插入排序

    package Sort; 
    /** 
     * @author wangpei 
     * @version 
     *创建时间:2017年3月28日 下午7:30:37 
     * 插入排序中的直接插入排序
     * 思路:对于r[i],其r[1]-r[i-1]位为有序的,r[i]插入到该有序序列中,
     * 再依次向下,比较r[i+1]......
     */
    
    
    //适用于序列基本有序的情况。最好情况比较n-1次,移动(n+2)*(n-1)/2
    //最坏情况比较(n+2)*(n-1)/2,移动(n-1)*(n+4)/2
    //平均:o(n*n)
    public class Zhijiecharu {
        public static void main(String[] args) {
            int a[]={0,2,5,3,9,10,1};
            sort(a);
        }
        public static void sort(int a[] ){
            int j=0;
            for(int i=2;i<a.length;i++){
                a[0]=a[i];
                for(j=i-1;a[0]<a[j];j--){//将其插入前边的i-1位
                     a[j+1]=a[j];
                } 
                a[j+1]=a[0];
            }
            for(int i=1;i<a.length;i++){
                System.out.println(a[i]);
            }
    
        }
    
    }
    

    2。折半插入排序

    package Sort; 
    /** 
     * @author wangpei 
     * @version 
     *创建时间:2017年3月28日 下午7:58:43 
     * 折半插入
     * 思路: 先在第i-1个元素中折半查找出i要插入的位置,然后移位插入。
     */
    //稳定排序,时间复杂度:o(n*n)
    public class Zhebancharu {
        public static void main(String[] args) {
            int a[]={0,2,5,3,9,10,1};
            sort(a);
        }
    
        public static void sort(int a[] ){
            for (int i = 2; i < a.length; i++) {
                //先查找a[i]在前i-1个元素中要插入的位置
                int low=1;
                int high=i-1;
                a[0]=a[i];
                while(low<=high){
                    int mid=(low+high)/2;
                    if(a[mid]>a[0]) high=mid-1;
                    else     low=mid+1;
                }//最终查找到i的插入位置为low
                for(int k=i-1;k>=low;k--){
                    a[k+1]=a[k];
                }
                a[low]=a[0];
    
            }
            for (int i = 1; i < a.length; i++) {
                System.out.println(a[i]+",");
    
            }
    
        }
    
    }
    
  • 相关阅读:
    用icas下载文件报错
    jboss7.1.1相关error及解决办法
    Base-64编码介绍
    上传文件路径问题
    ZooKeeper安装(Windows)
    DBCP连接池配置参数说明
    Linux普通用户使用sudo权限启停apache服务
    线程池中的队列
    java线程池原理及实现方式
    https基础流程
  • 原文地址:https://www.cnblogs.com/wangxiaopei/p/8551220.html
Copyright © 2011-2022 走看看