排序算法之插入排序

插入排序的原理:

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素小于前面的元素(已排序),则依次与前面元素进行比较如果小于则交换,直到找到大于该元素的就则停止;
  4. 如果该元素大于前面的元素(已排序),则重复步骤2
  5. 重复步骤2~4 直到所有元素都排好序 。

代码实现Java(从小到大):

public static void InsertionSort(int[] array)

{
    int n = array.Length;
    //从第二个元素开始
    for (int i = 1; i < n; i++)
    {
        //从第i个元素开始,一次和前面已经排好序的i-1个元素比较,如果小于,则交换
        for (int j = i; j > 0; j--)
        {
            if (array[j]<array[j - 1])
            {
                Swap(array, j, j - 1);
            }
            else//如果大于,则不用继续往前比较了,因为前面的元素已经排好序,比较大的大就是教大的了。
                break;
        }
    }
}
private static void Swap(int[] array, int i, int min)
    {
        T temp = array[i];
        array[i] = array[min];
        array[min] = temp;
    }
 
总结:
插入排序:时间复杂度最好n,最差n2,稳定排序

posted on 2017-10-30 21:23  Andyagg  阅读(153)  评论(0)    收藏  举报

导航