经典算法复习-插入排序算法

Posted 快乐的GTD吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典算法复习-插入排序算法相关的知识,希望对你有一定的参考价值。

温习《数据结构C语言版》,看到排序算法,感觉看不懂。

写到代码实现下,花费了很久才搞出来。

实现的跟书本上的有点不一样哦,不喜勿喷。 

参考文章: http://blog.csdn.net/hguisu/article/details/7776068

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("---------insert sort algorithm------------\n\n");

    //等待排序数组
    int a[] = {17,35,25,4,88,67,49};

    printf("\n----------Orgin Array-------------\n");
    print_array(a,sizeof(a)/sizeof(int));
    Sort_Insert(a,7);

    printf("\n-------After Sort--------\n");
    print_array(a,sizeof(a)/sizeof(int));


    return 0;
}

void print_array(int a[],int size)
{
    int i;
    for(i=0;i<size;i++)
    {
        printf("%d ",a[i]);
    }

    printf("\n");
}
/** \brief
 *
 * \param
 * \param
 * \return
 *
 */
void InsertPass(int a[],int size,int index)
{
    int i;
    int j;
    int t = a[index];
    int insert_pos = -1;

    //右移,插入
    //找出插入的位置
    for(i=0; i<index; i++)
    {
        if(a[i] > t)
        {
         insert_pos = i;
         break;
        }
    }

    //printf("insert pos : %d\n", insert_pos);

    if(insert_pos == -1){
        return;
    }
    //插入位置以后的元素右移
    for(j=index;j>insert_pos;j--)
    {
        //printf("array[%d] = %d right move\n", j,a[j-1]);
        a[j] = a[j-1];

    }

    //插入
    a[insert_pos] = t;
}


//插入排序
void Sort_Insert(int a[],int size)
{
    int i;

   for(i=1;i<size;i++)
   {
     InsertPass(a,size,i);
     printf("\nround %d: ",i);
     print_array(a,7);
   }
}

  

以上是关于经典算法复习-插入排序算法的主要内容,如果未能解决你的问题,请参考以下文章

七种常见经典排序算法总结(C++)

经典算法复习快速排序的应用

十大经典排序算法总结(插入排序)

经典排序算法 – 插入排序Insertion sort

十大经典排序算法的算法描述和代码实现

经典排序算法——折半插入排序