C语言位排序
来源:互联网 发布:知乎日报 rss 编辑:程序博客网 时间:2024/06/03 20:29
/*超快速超省内存的位排序*/
#include<limits.h>
#include<stdio.h>
#define BITMASK(b) (1 << ((b) % CHAR_BIT))
#define BITSLOT(b) ((b) / CHAR_BIT)
#define BITSET(a, b) ((a)[BITSLOT(b)] |= BITMASK(b))
#define BITCLEAR(a, b) ((a)[BITSLOT(b)] &= ~BITMASK(b))
#define BITTEST(a, b) ((a)[BITSLOT(b)] & BITMASK(b))
#define BITNSLOTS(nb) ((nb + CHAR_BIT - 1) / CHAR_BIT)
char bitarray[BITNSLOTS(10000000)];//位数组最大容量10000000 bit
void main(){
int i;
for(int j=0;j<10;j++){//待排序数据的输入
scanf("%d",&i);
BITSET(bitarray, i);//对应位置1
}
for(int q=0;q<10000000;q++){
if(BITTEST(bitarray, q)){//位遍历输出排序结果
printf("%d\t",q);
}
}
}
#include<limits.h>
#include<stdio.h>
#define BITMASK(b) (1 << ((b) % CHAR_BIT))
#define BITSLOT(b) ((b) / CHAR_BIT)
#define BITSET(a, b) ((a)[BITSLOT(b)] |= BITMASK(b))
#define BITCLEAR(a, b) ((a)[BITSLOT(b)] &= ~BITMASK(b))
#define BITTEST(a, b) ((a)[BITSLOT(b)] & BITMASK(b))
#define BITNSLOTS(nb) ((nb + CHAR_BIT - 1) / CHAR_BIT)
char bitarray[BITNSLOTS(10000000)];//位数组最大容量10000000 bit
void main(){
int i;
for(int j=0;j<10;j++){//待排序数据的输入
scanf("%d",&i);
BITSET(bitarray, i);//对应位置1
}
for(int q=0;q<10000000;q++){
if(BITTEST(bitarray, q)){//位遍历输出排序结果
printf("%d\t",q);
}
}
}
阅读全文
1 0
- C语言位排序
- C语言位运算
- C语言位运算
- C语言 位域
- C语言 位操作
- c语言位域
- C语言位运算
- c语言位运算
- C语言位操作
- C语言位运算
- C语言位操作
- c语言位运算
- 位段【C语言】
- c语言位域
- C语言位域
- C语言位运算
- C语言位操作
- C语言位操作
- 关于Document生成xml的总结(二)
- maven的安装教程
- JAVA强制类型转换
- 初识粒子群算法
- HDU1005Number Sequence
- C语言位排序
- 线程和进程
- Java中几种常用的分页
- vue 简单动画过渡
- TPAdmin 验证码不显示问题
- JSP内容之Tomcat
- Android 状态栏样式 全面解析
- 【Tensorflow slim】slim.data包
- Transacion事务