#include <stdlib.h>
#include <stdio.h>
void print(int arr[],int n){
printf("\n");
int i;
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void bitSort(int arr[],int n,int max){
int bitsSize=max/8+1;
char* bits=malloc(max/8+1);
memset(bits,0,bitsSize);
int i,j;
for(i=0;i<n;i++)
{
bits[arr[i]/8]=bits[arr[i]/8]|(1<<arr[i]%8);//將對應字節位變爲1
}
for(i=0;i<bitsSize;i++)
{
if(bits[i]!=0){
for( j=0;j<8;j++){
if(bits[i]&1<<j){
*arr++=i*8+j;//將字節位是1的數字取出
}
}
}
}
}
int main(int argc ,char** argv)
{
int arr[]={1,4,5,3,34,6,9,22,99};
int size=sizeof(arr)/sizeof(int);
print(arr,size);
bitSort(arr,size,100);
print(arr,size);
}