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

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

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

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

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

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

int main()
{
    printf("---------insert sort algorithm------------

");

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

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

    printf("
-------After Sort--------
");
    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("
");
}
/** rief
 *
 * param
 * param
 * 
eturn
 *
 */
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
", insert_pos);

    if(insert_pos == -1){
        return;
    }
    //插入位置以后的元素右移
    for(j=index;j>insert_pos;j--)
    {
        //printf("array[%d] = %d right move
", 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("
round %d: ",i);
     print_array(a,7);
   }
}

  

原文地址:https://www.cnblogs.com/jiftle/p/6714737.html