经典算法复习-插入排序算法
温习《数据结构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); } }