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

本文通过C语言实现了一个插入排序算法,并详细展示了排序过程。从原始数组开始,逐步介绍每轮排序后的变化,最终得到一个有序数组。

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

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

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

参考文章: http://blog.youkuaiyun.com/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);
   }
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值