ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法系列01----插入排序

2022-07-26 21:00:19  阅读:146  来源: 互联网

标签:01 temp int 插入排序 元素 ---- array 指针


插入排序法

1.工作原理(算法思路)

新建一个指针,指针左边的所有元素都是有序的。但是他们的位置并不是最终位置,一个指针从左向右扫描,若指针所在处的元素比左边元素小,则将该元素向前浮动至适当位置,使指针左侧元素仍然保持有序。当指针扫描到整个数组元素的末尾时,数组排序完成。

2.动图演示

插入排序法动图

3.C#代码实现

根据原理设计算法:

  class Program
{
    //插入排序法
    public static void insertSort(int[] array)
    {
        //for循环:i作为指针,进行从左到右扫描数据的工作
        //指针i从1开始扫描,因为i=0时指针左侧无元素
        for (int i = 1; i < array.Length; i++)
        {
            //temp作为指针键值
            int temp = array[i];

            //新建变量j,从i开始向左扫描已经有序的元素,并与temp比较
            //若temp小于扫描元素,则将j指针元素向右移位腾出空间
            int j = i;
            while (j > 0 && array[j - 1] > temp)
            {
                array[j] = array[j - 1];
                j--;
            }
            //循环完成后将temp放在j指针位置,完成本次插入
            array[j] = temp;
        }

    }

    //打印数组
    public static void printArray(int[] array)
    {
        foreach (int item in array)
        {
            Console.Write(item + "\t");
        }
        Console.WriteLine();
    }

    //主函数入口
    static void Main(string[] args)
    {
        int[] array = new int[10] { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
        printArray(array);
        insertSort(array);
        printArray(array);
        Console.ReadKey();

    }
}
折叠

输出结果:
插入排序法输出结果

4.性能分析

1)复杂度
插入排序法复杂度

2)插入排序法特点

  • 在数组元素规模较小的时候,插入排序法的运行效率很高。其经常用在一些其他排序方法中(比如归并排序以及快速排序)来对排序进行优化。
  • 不同于选择排序法,当一个数组几乎有序的时候,插入排序法所需要的时间要比其他的排序法快得多。因此插入排序法的排序时间取决于数组元素的初始顺序,在最好的情况下,插入排序法运行时间能达到线性级别。
  分类: 算法

标签:01,temp,int,插入排序,元素,----,array,指针
来源: https://www.cnblogs.com/zhengwei-cq/p/16522621.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有