java圆形排列_位图排序java版
1、《編程珠璣》第一章第一題就相當的精彩,做個筆記。題目如下:
輸入:?? 一個包含n個正整數的文件,每個正整數小于n,n等于10的7次方(一千萬)。并且文件內的正整數沒有重復和關聯數據。
輸出:? 輸入整數的升序排列
約束: 限制在1M左右內存,充足的磁盤空間
java源碼:
/**
*?Created?by?IntelliJ?IDEA.
*?User: zhuangxd
*?Date:?2008-1-7
*?Time:?14:30:44
*/
public?class?BitSortTest?{
private?static?final?int?BITSPERWORD?=?32;??//整數位數
private?static?final?int?SHIFT?=?5;
private?static?final?int?MASK?=?0x1F;??//5位遮蔽 0B11111
private?static?final?int?N?=?10000000;
//用int數組來模擬位數組,總計(1?+?N?/?BITSPERWORD)*BITSPERWORD位,足以容納N
private?static?int[]?a?=?new?int[(1?+?N?/?BITSPERWORD)];
public?static?void?main(String[]?args)?{
bitsort(new?int[]{1,?100,?2,?10000,?9999,?4567,?78902});
}
public?static?void?bitsort(int[]?array)?{
for?(int?i?=?0;?i?
clr(i);???//位數組所有位清0
for?(int?i?=?0;?i?
set(array[i]);???//階段2
for?(int?i?=?0;?i?
if?(test(i))
System.out.println(i);
}
//置a[i>>SHIFT]的第(i?&?MASK)位為1,也就是位數組的第i位為1
public?static?void?set(int?i)?{
a[i?>>?SHIFT]?|=?(1?<
}
//置a[i>>SHIFT]的第(i?&?MASK)位為0,也就是位數組的第i位為0
public?static?void?clr(int?i)?{
a[i?>>?SHIFT]?&=?~(1?<
}
//測試位數組的第i位是否為1
public?static?boolean?test(int?i)?{
return?(a[i?>>?SHIFT]?&?(1?<
}
}
總結
以上是生活随笔為你收集整理的java圆形排列_位图排序java版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑绘画叫什么软件(电脑上有什么绘画软件
- 下一篇: oracle java 并发_【转】JA