|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看net网页编程Beans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
packageUtils.Sort;
/**
*希尔排序,请求待排序的数组必需完成Comparable接口
*/
publicclassShellSortimplementsSortStrategy
{
privateint[]increment;
/**
*使用希尔排序算法对数组obj举行排序
*/
publicvoidsort(Comparable[]obj)
{
if(obj==null)
{
thrownewNullPointerException("Theargumentcannotbenull!");
}
//初始化步长
initGap(obj);
//步长顺次变更(递加)
for(inti=increment.length-1;i>=0;i--)
{
intstep=increment[i];
//由步长地位入手下手
for(intj=step;j<obj.length;j++)
{
Comparabletmp;
//假如前面的小于后面的(相隔step),则与后面的互换
for(intm=j;m>=step;m=m-step)
{
if(obj[m].compareTo(obj[m-step])<0)
{
tmp=obj[m-step];
obj[m-step]=obj[m];
obj[m]=tmp;
}
//由于之前的地位一定已对照过,以是这里间接加入轮回
else
{
break;
}
}
}
}
}
/**
*依据数组的长度断定求增量的公式的最年夜指数,公式为pow(4,i)-3*pow(2,i)+1和9*pow(4,i)-9*pow
2,i)+1
*@returnint[]两个公式的最年夜指数
*@paramlength数组的长度
*/
privateint[]initExponent(intlength)
{
int[]exp=newint[2];
exp[0]=1;
exp[1]=-1;
int[]gap=newint[2];
gap[0]=gap[1]=0;
//断定两个公式的最年夜指数
while(gap[0]<length)
{
exp[0]++;
gap[0]=(int)(Math.pow(4,exp[0])-3*Math.pow(2,exp[0])+1);
}
exp[0]--;
while(gap[1]<length)
{
exp[1]++;
gap[1]=(int)(9*Math.pow(4,exp[1])-9*Math.pow(2,exp[1])+1);
}
exp[1]--;
returnexp;
}
privatevoidinitGap(Comparable[]obj)
{
//使用公式初始化增量序列
intexp[]=initExponent(obj.length);
int[]gap=newint[2];
increment=newint[exp[0]+exp[1]];
//将增量数组由年夜到小赋值
for(inti=exp[0]+exp[1]-1;i>=0;i--)
{
gap[0]=(int)(Math.pow(4,exp[0])-3*Math.pow(2,exp[0])+1);
gap[1]=(int)(9*Math.pow(4,exp[1])-9*Math.pow(2,exp[1])+1);
//将年夜的增量先放进增量数组,这里实践上是一个合并排序
//不必要思索gap[0]==gap[1]的情形,由于不成能呈现相称。
if(gap[0]>gap[1])
{
increment[i]=gap[0];
exp[0]--;
}
else
{
increment[i]=gap[1];
exp[1]--;
}
}
}
}
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊 |
|