排序算法之插入排序的通用算法

 1 void move(char *a ,char *b , int width )
 2 {
 3     if(a != b )
 4     {
 5         while( width--)
 6         {
 7             *a++ = *b++;
 8         }
 9     }
10 }
11 void insert_sort(void *array,int width , int num , int (*comp)(void *a,void *b) )
12 {
13     int i,j;
14     char *ptr;
15     char *mid = (char *)malloc( sizeof(char* num * width ); 
16     ptr = (char *)array;
17     
18     memset(mid,0,sizeof(mid));
19     for( i = 1 ; i < num ; i++ )
20     {
21         move(mid , ptr + i*width , width );
22         for(j = i ; j > 0 ; j-- )
23         {
24             if(comp( mid ,ptr + (j - 1)*width ) >= 0 )
25             {
26                 break;
27             }
28             move( ptr + j*width , ptr + (j-1)*width ,width );
29         }
30         move(ptr + j * width , mid , width );
31         for( j = 0; j < num ; j++ )
32             printf("%d,",*int*)(ptr + width*j));
33     }
34 }
35 
36 int cmp(void *a,void *b )
37 {
38     int *aa ,*bb;
39     aa = (int *) a;
40     bb = (int *) b;
41     return *bb - *aa ;
42 }

posted on 2010-12-13 23:05 编码者-thinker 阅读(161) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜