用bitmap排序

来源:互联网 发布:便宜耳机推荐知乎 编辑:程序博客网 时间:2024/06/06 18:27

34  67  89  2223  44  55  775  332  345  675  4234  123  565  345  98  1213  9876  90  353  4242 
34  44  55  67  89  90  98  123  332  345  353  565  675  775  1213  2223  4234  4242  9876 

 

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#include   <stdio.h>
#include  <stdlib.h>
void  setbit(char *p , int  value)
{
        int idiv=value/8;
        int  imod=value%8;
        *(p+idiv) = *(p+idiv)  |  0x1 << imod ;
}

int  main ()
{

#define  LENGTH  65535/8

        ushort  data[]={34,67,89,2223,44,55,775,332,345,675,4234,123,565,345,98,1213,9876,90,353,4242};
        char p[LENGTH]="\0";
        uint  i,j,value;
        for( i=0;i<sizeof(data)/sizeof(ushort);i++)
        {
                setbit(p,data[i]);
                printf("%d  ",data[i]);
        }
        printf("\n");
        for( i=0;i<LENGTH;i++)
        {
                for( j=0;j<8;j++)
                {
                        if ( ( *(p+i)& (0x1<<j))==  0x1<<j )
                        {
                                value=i*8+ j;
                                printf("%d  ",value);
                        }
                }
        }
        printf("\n");
}

 

原创粉丝点击