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