仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1844|回复: 18
打印 上一主题 下一主题

[学习教程] 发布一篇java中完成希尔排序算法

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:34:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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语言的团队,是微软重金挖过去的啊
莫相离 该用户已被删除
沙发
发表于 2015-1-30 14:58:08 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
若相依 该用户已被删除
板凳
发表于 2015-2-6 13:32:03 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
兰色精灵 该用户已被删除
地板
发表于 2015-2-16 07:14:43 | 只看该作者
是一种突破用户端机器环境和CPU
飘飘悠悠 该用户已被删除
5#
发表于 2015-3-5 01:03:39 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
精灵巫婆 该用户已被删除
6#
发表于 2015-3-8 17:20:14 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
透明 该用户已被删除
7#
 楼主| 发表于 2015-3-16 07:39:26 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
若天明 该用户已被删除
8#
发表于 2015-3-22 21:09:24 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
小魔女 该用户已被删除
9#
发表于 2015-3-25 03:44:29 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
金色的骷髅 该用户已被删除
10#
发表于 2015-4-1 00:37:14 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
海妖 该用户已被删除
11#
发表于 2015-4-13 08:26:59 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
柔情似水 该用户已被删除
12#
发表于 2015-4-23 03:34:29 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
蒙在股里 该用户已被删除
13#
发表于 2015-5-4 11:35:31 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
老尸 该用户已被删除
14#
发表于 2015-6-13 13:45:58 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
再见西城 该用户已被删除
15#
发表于 2015-6-14 20:20:05 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
第二个灵魂 该用户已被删除
16#
发表于 2015-6-29 20:54:30 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
愤怒的大鸟 该用户已被删除
17#
发表于 2015-7-4 01:23:18 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
不帅 该用户已被删除
18#
发表于 2015-7-10 03:02:31 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
分手快乐 该用户已被删除
19#
发表于 2015-7-17 22:34:07 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表