今天突然发现位运算还可以用于排序(前提是没有重复数字),这里写了一个简单的基于位运算排序算法,比较简单,不过应该有借鉴意义,^_^。
package com.basic.bitmap;
public class Bitmap {
private static final int MAX = 8;
private char bit[];
public Bitmap() {
this.bit = new char[32];
}
public static void main(String argv[]) {
Bitmap map = new Bitmap();
map.set(1);
map.set(2);
map.set(255);
map.set(5);
map.set(63);
map.set(4);
map.set(9);
map.set(10);
for(int i = 0; i < 256; i++) {
if(map.get(i) != 0) {
System.out.println(i);
}
}
}
private boolean set(int value) {
this.bit[value/MAX] |= 1 << value%8;
return true;
}
private int get(int value) {
return this.bit[value/MAX] & (1 << value%8);
}
}
输出结果:
1
2
4
5
9
10
63
255