1、可以使用位数组排序的前提是数组中的元素不能有重复数字,而且这个数组可以无序,但数组中元素出现有最大范围限制。
2、遍历元数组,将原数组的中的元素存放到事先创建好的位数组的指定位上。
3、重新遍历位数组中的每个位如果为true的化,则附加到最终结果上。
// 使用BitSet进行排序
private static String sortNums(Integer[] integers) {
long start = System.currentTimeMillis();
System.out.println("开始排序-使用BitSet进行排序");
int len = integers.length;
StringBuilder sb = new StringBuilder();
BitSet bitSet = new BitSet(len);
bitSet.set(0, len, false);
for (Integer integer : integers) {
bitSet.set(integer, true);
}
sb.append("[");
for (int i = 0; i <= len; i++) {
if (bitSet.get(i)) {
sb.append(i);
}
if (bitSet.get(i + 1)) {
sb.append(", ");
}
}
sb.append("]");
System.out.println("排序完成,耗时:" + (System.currentTimeMillis() - start) + "毫秒");
return sb.toString();
}
public static void main(String[] args) {
Integer[] integers = {3, 2, 1, 4, 6, 5, 0};
System.out.println(Arrays.toString(integers));
String sortNums = sortNums(integers);
System.out.println(sortNums);
}