zoukankan      html  css  js  c++  java
  • 直接插入排序(插入排序)

    简介:

    直接插入的思想是:是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。

    例如,排序序列(3,2,1,5)的过程是,初始时有序序列为(3),然后从位置1开始,先访问到2,将2插入到3前面,得到有序序列(2,3),之后访问1,找到合适的插入位置后得到有序序列(1,2,3),最后访问5,得到最终有序序列(1,2,3,5).

     实现:

    package suanfa;
    /*
     * 直接插入排序
     */
    public class StraightInsertionSort {
        
        public static void insertSort(int[] array) {
    
            int len=array.length;
    
            for (int i = 1; i < len; i++) {
    
                int temp = array[i];
    
                int j;
                    
                for(j = i; j > 0; j--) {
                    
                    if(array[j-1] > temp) {
                        
                        array[j] = array[j-1];
                        
                    }else
                        break;
                }
                
               array[j]=temp;        
    
            }
    
           
        }
    
        public static void print(int src[]) {
             for (int i = 0; i < src.length; i++) {
                 
                    System.out.print(src[i] + " ");
                }
             System.out.println();
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int array[]= {3,2,1,5};
            print(array);
            insertSort(array);
            print(array);
        }
    
    }

    分析:

    最好情况下,当待排序序列中记录已经有序时,则需要n-1次比较,不需要移动,时间复杂度为 O(n) 。最差情况下,当待排序序列中所有记录正好逆序时,则比较次数和移动次数都达到最大值,时间复杂度为 O(n^2) 。平均情况下,时间复杂度为 O(n^2) 。

  • 相关阅读:
    每个Java开发人员都应该知道的4个Spring注解
    JVM中的动态语言支持简介
    深入探索Java设计模式(五)之构建器模式
    Java——MVC模式
    程序出了问题,报错只能参考
    查看电脑端口占用情况
    Java——参数传递
    Python——关于定义过程
    Java——super的使用
    关于如何查看论文是否被SCI或者EI收录
  • 原文地址:https://www.cnblogs.com/liuzhenping/p/7569610.html
Copyright © 2011-2022 走看看