【发布时间】:2015-02-28 11:19:03
【问题描述】:
我已经获得了 3 种算法来进行逆向工程并解释它们是如何工作的,到目前为止,我已经得出了一个快速排序算法和一个冒泡排序算法;但是我不确定这是什么算法。我了解快速排序和冒泡排序是如何工作的,但我就是无法理解这个算法。我不确定变量是什么,希望有人能告诉我这里发生了什么:
public static ArrayList<Integer> SortB(ArrayList<Integer> a)
{
ArrayList<Integer> array = CopyArray(a);
Integer[] zero = new Integer[a.size()];
Integer[] one = new Integer[a.size()];
int i,b;
Integer x,p;
//Change from 8 to 32 for whole integers - will run 4 times slower
for(b=0;b<8;++b)
{
int zc = 0;
int oc = 0;
for(i=0;i<array.size();++i)
{
x = array.get(i);
p = 1 << b;
if ((x & p) == 0)
{
zero[zc++] = array.get(i);
}
else
{
one[oc++] = array.get(i);
}
}
for(i=0;i<oc;++i) array.set(i,one[i]);
for(i=0;i<zc;++i) array.set(i+oc,zero[i]);
}
return(array);
}
【问题讨论】:
标签: java arrays algorithm sorting reverse-engineering