zoukankan      html  css  js  c++  java
  • 【经典算法】第三回:插入排序

    1.概述

    原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序,杂度为O(n2)。

    步骤:遍历从第二个元素开始,比较前面的元素是否大于该元素,大于的话,交换位置。依此类推。

    理解:手上有一副牌,要按照从小到大的顺序排序,先把第2张跟第一张进行比较,如果第一张大于第二张就调用。再拿第3张牌跟前面两张进行比较,先比较第二张,如果大于换位置,再比较第一张。再拿第4张牌跟前面3张从右往左进行比较,其它牌依此类推。

    2.示例

            //插入排序
            public static void InsertionSort(int[] nums)
            {
                for (int i = 1; i < nums.Length; i++)
                {
                    int t = nums[i];
                    int j = i;
    
                    while ((j > 0) && (nums[j - 1] > t))
                    {
                        nums[j] = nums[j - 1];//交换顺序   
                        --j;
                    }
    
                    nums[j] = t;
                }
            }
            // int[] list = new[] { 4, 1, 2, 7, 9, 0, 8 };
            //  Sorter.InsertionSort(list);

     

    作者:Qlin
    出处:http://www.cnblogs.com/qqlin/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    【竞赛笔记】飞思卡尔智能车竞赛
    【实习笔记】智能广场健身设备总结
    RabbitMQ之安装
    数据结构与算法之队列
    joda-time时间操作组件
    JavaScript中的跨域问题
    数据结构与算法之链表
    Jedis集成到项目中
    ICMP协议和ping命令
    jedis的使用
  • 原文地址:https://www.cnblogs.com/qqlin/p/2931772.html
Copyright © 2011-2022 走看看