/**
*
* @author zhangguangsen
*无重复大量数据排序 借助位图思想(本程序用的是Byte)
*例如 从磁盘文件中导入10000条无重复电话号码集 然后经过程序排序完成后导回磁盘文件中
*该程序只是一个核心思想的Demo,
*
*/
public class MagicSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int []a = new int [n];
for(int i = 0;i< n;i++){
a[i] = sc.nextInt();
}
magicSort(a,n);
}
public static void magicSort(int[] a,int n) {
int max = a[0];
for(int j = 0;j<n;j++)
max = max<a[j]?a[j]:max;
byte[]bit = new byte[max+1];
//用位图表示这个集合,初始化b位图全部置0,
for(int i = 0;i<bit.length;i++)
bit[i] = 0;
//a集合中的数值与位图bit的下标相对应
for(int i = 0;i<a.length;i++)
bit[a[i]] = 1;
//输出排好的集合
for(int i = 0;i<bit.length;i++)
if(bit[i]==1)
System.out.println(i);
}
}
编程珠玑_磁盘中无重复大量整数数据排序限制内存借助位图
最新推荐文章于 2024-07-20 23:59:39 发布