Insert sort

插入排序(Insertion Sort)

一.直接插入排序

1.简单结构

a.算法

算法描述:

图例:

b.伪代码

c.代码实现(C语言)

  • 非递归
void Acending_InsertionSort(int A[],int n)
{
    int j;
    for(j=1;jint key=A[j];
        int i=j-1;
        while(i>=0&&A[i]>key)//若为降序Descending,将其改为A[i]
        {
            A[i+1]=A[i];
            i--;
        }
        A[i+1]=key;
    }
}
  • 递归
void Acending_InsertionSort(int A[],int n)
{
    if(n>0)
    {
        InsertionSort(A,n-1);
        int i=n-2;
        int key=A[n-1];
        while(i>=0&&A[i]>key)//若为降序Descending,将其改为A[i]A[i+1]=A[i];
            i--;
        }
        A[i+1]=key;
    }

d.算法分析

  • 运行时间分析:时间开销与输入序列的规模(即待排序数组的长度)及数组的已排序程度有关

  • 时间复杂度:

    O(n2)

  • 插入排序是原地排序(sort in place)和稳定排序(stable sort)

2.有序表

你可能感兴趣的:(排序算法,acm专项训练,排序)