首页 > 代码库 > 经典算法复习-插入排序算法

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

温习《数据结构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);   }}

  

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