首页 > 代码库 > 经典算法复习-插入排序算法
经典算法复习-插入排序算法
温习《数据结构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); }}
经典算法复习-插入排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。