平面设计网站大全网站,网页被禁用了怎么解除,高水平的网站建设公司,塑胶包装东莞网站建设1. 位图结构的实现
/*** 位图数据类型 br /* 位图以字节的一位为单位进行元素的操作#xff0c;但是位运算以一个字节整体为运算单位#xff0c;因此代码中以 bytes[index] 进行运算。* 位图元素的添加即找到相应的位置#xff0c;将其置为1#xff0c;实现时将该…1. 位图结构的实现
/*** 位图数据类型 br /* 位图以字节的一位为单位进行元素的操作但是位运算以一个字节整体为运算单位因此代码中以 bytes[index] 进行运算。* 位图元素的添加即找到相应的位置将其置为1实现时将该元素所在字节位与1元素在字节所在位求或即可* 位图元素的删除即找到相应的位置将其置为0实现时将该元素所在字节位与(1元素在字节所在位)取反再求与即可* 检查一个元素是否在位图中实现时将该元素所在字节位与(1元素在字节所在位)求与后判断是否为0即可。**/
public class BitMap {private byte[] bytes;private int capacity;private static final int DEFAULT_CAPACITY 32;public BitMap() {this(DEFAULT_CAPACITY);}public BitMap(int capacity) {this.capacity capacity;this.bytes new byte[(capacity 3) 1];}/*** ADD** param num 元素*/public void add(int num) {bytes[index(num)] | (iterateByte(num));}/*** DELETE** param num 元素*/public void delete(int num) {bytes[index(num)] (~iterateByte(num));}/*** 判断是否存在** param num 元素* return 如果存在返回 true否则返回 false*/public boolean contains(int num) {return (bytes[index(num)] iterateByte(num)) ! 0;}/*** 计算 num/8** param num 运算数* return 索引*/private int index(int num) {return num 3;}/*** 获取元素字节所在位字节** param num 运算数* return 1 左移 num%8 位 的结果*/private int iterateByte(int num) {return 1 (num 0x07);}public byte[] getBytes() {return bytes;}public int getCapacity() {return capacity;}
}2. 利用位图排序
public void sortByBitMap() {int[] arr {4, 9, 2, 17, 3, 10};BitMap bitMap new BitMap();for (int i : arr) {bitMap.add(i);}ListInteger result new ArrayList();byte[] bytes bitMap.getBytes();for (int i 0; i bytes.length; i) {for (int j 0; j 8; j) {if ((bytes[i] (1 j)) (1 j)) {result.add((i 3) j);}}}System.out.println(result);
}