zoukankan      html  css  js  c++  java
  • 数据结构-插入排序法

      插入排序法 (Insert Sort) 是将数组中的元素,逐一与已排序好的数据作比较,再将该数组元素插入适当的位置。

    演算过程

    插入法分析

    1. 最坏及平均情况需比较 (n-1)+(n-2)+(n-3)+...+3+2+1=n(n-1)/2 次;时间复杂度为 O(n^2),最好情况时间复杂度为 O(n)。
    2. 插入排序是稳定排序法。
    3. 只需一个额外的空间,所以空间复杂度为最佳。
    4. 此排序法适用于大部分数据已经过排序或已排序数据库新增数据后进行排序的情况。
    5. 插入排序法会造成数据的大量搬移,所以建议在链表上使用。

    example1

    /**
     * 插入排序法
     *
     */
    public class InsertSort {
    
        public static void main(String[] args) {
            int data[] = new int[] {6, 4, 9, 8, 3};
            System.out.print("原始数据:");
            showData(data);
            insert(data);
            System.out.print("排序后的数据:");
            showData(data);
        }
        
        private static void insert(int data[]) {
            int i, j, tmp;
            for (i = 1; i < data.length; i++) {
                tmp = data[i];
                j = i;
                while (--j >= 0 && tmp < data[j]) {
                    data[j+1] = data[j];
                    data[j] = tmp;
                }
                showData(data);
            }
        }
        
        private static void showData(int data[]) {
            for (int i = 0; i < data.length; i++) {
                System.out.printf("[%d]", data[i]);
            }
            System.out.printf("%n");
        }
    
    }
  • 相关阅读:
    Android-adb相关
    我想和iOS大牛们交流的问题
    iOS应用 bug定位
    iOS 中Block的基础用法
    iOS9 耗电量惊人
    三人小团队git分支协作试水
    今天开通了博客
    解决XCode安装插件后插件不能使用的问题(转载)
    (转载)iOS- 指压即达,如何集成iOS9里的3D Touch
    人魔七七
  • 原文地址:https://www.cnblogs.com/qpliang/p/12687291.html
Copyright © 2011-2022 走看看