排序算法---插入排序

基本思想:

插入排序是一种比较直观的排序算法。具体逻辑为:

1.从第一个元素开始,该元素可以认为已经被排序。

2.取出下一个元素,在已经排序的元素序列中从后向前扫描。

3.如果钙元素小于前面的元素(已排序),则依次与前面元素进行比较,如果小于则交换,直到找到大于该元素的就停止。

4.如果该元素大于前面的元素(已排序),则重复步骤2。

5.重复步骤2~4直到所有元素都排序好。

时间复杂度:

    最好情况:

          比较:N-1

          交换:0

    最坏情况:

          比较:N2/2

          交换:N2/2

     平均情况:

          比较:N2/4

          交换:N2/4

具体实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataStructure
{
    public class InsertionSort<T>:BaseSort<T> where T:IComparable<T>
    {
        public override void Sort(T[] array)
        {
            if (array != null)
            {
                for (int i = 1; i < array.Length; i++)
                {
                    for (int k = i; k > 0; k--)
                    {
                        if (array[k].CompareTo(array[k - 1]) < 0)
                            base.Swap(array, k - 1, k);
                        else
                            break;
                    }
                }
            }
            else
                throw new ArgumentNullException();
        }
    }
}
原文地址:https://www.cnblogs.com/fang-beny/p/3601076.html