经典插入排序算法分析 未优化的版本 C语言实现

来源:互联网 发布:数据库的储存过程 编辑:程序博客网 时间:2024/05/20 03:04

直接插入排序
1.插入排序思想
        直接插入排序思想是将待排序的数组看作两个部分:有序部分和无序部分,排序过程就是不断将无序部分的元素插入到有序部分合适的位置上,使有序部分元素不断增加而无序部分数据不断减少,直到数组全部有序为止。
        假设数组A[0...n-1]
        (1)初始时,A[0]作为有序部分,A[1...n-1]为无序部分;
        (2)在有序部分进行比较和移动,为无序部分的第一个元素A[1]找到合适的位置,并插入到有序部分,使A[0,1]构成新的有序部分,而A[2...n-1]为剩下的无序部分;
        (3)按照步骤(2)执行,直到数组有序。

2.插入排序的实现
        根据上述的算法思想描述,可以得到实现代码(C实现)如下。

//插入排序算法  这个是没有优化过的void insertSort(int *a,int len){    int i,j,value;    for(i=1;i<len;i++)    {        value=a[i];//无序的第一个元素        for(j=i-1;j>=0&&a[j]>value;j--)        {            a[j+1]=a[j];        }        a[j+1]=value;    }    for(i=0;i<len;i++)    {        printf("%d  ",a[i]);    }}int main(){    int a[]={9,8,7,6,5,44,98987,45,31,454,3,1};    insertSort(a,12);    return 0;}


0 0
原创粉丝点击