仓酷云
标题:
来看疾速排序算法的JAVA完成
[打印本页]
作者:
分手快乐
时间:
2015-1-18 11:12
标题:
来看疾速排序算法的JAVA完成
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。
packageUtils.Sort;
/**
*疾速排序,请求待排序的数组必需完成Comparable接口
*/
publicclassQuickSortimplementsSortStrategy
{ privatestaticfinalintCUTOFF=3; //当元素数年夜于此值时接纳疾速排序
/**
*使用疾速排序算法对数组obj举行排序,请求待排序的数组必需完成了Comparable接口
*/
publicvoidsort(Comparable[]obj)
{ if(obj==null)
{ thrownewNullPointerException("Theargumentcannotbenull!");
}
quickSort(obj,0,obj.length-1);
}
/**
*对数组obj疾速排序
obj 待排序的数组
left数组的下界
right数组的上界
*/
privatevoidquickSort(Comparable[]obj,intleft,intright)
{ if(left+CUTOFF>right)
{ SortStrategyss=newChooseSort();
ss.sort(obj);
} else
{ //找出枢轴点,并将它放在数组最初面的地位
pivot(obj,left,right);
inti=left,j=right-1;
Comparabletmp=null;
while(true)
{ //将i,j分离移到年夜于/小于关键值的地位
//由于数组的第一个和倒数第二个元素分离小于和年夜于枢纽元,以是不会产生数组越界
while(obj[++i].compareTo(obj[right-1])<0) {}
while(obj[--j].compareTo(obj[right-1])>0) {}
//互换
if(i<j)
{ tmp=obj[i];
obj[i]=obj[j];
obj[j]=tmp;
}
else break;
}
//将关键值与i指向的值互换
tmp=obj[i];
obj[i]=obj[right-1];
obj[right-1]=tmp;
//对关键值左边和右边数组持续举行疾速排序
quickSort(obj,left,i-1);
quickSort(obj,i+1,right);}
}
/**
*在数组obj当选取关键元,拔取办法为取数组第一个、两头一个、最初一个元素中两头的一个。将关键元置于倒数第二个地位,三其中最年夜的放在数组最初一个地位,最小的放在第一个地位
obj要选择关键元的数组
left数组的下界
right数组的上界
*/
privatevoidpivot(Comparable[]obj,intleft,intright)
{ intcenter=(left+right)/2;
Comparabletmp=null;
if(obj[left].compareTo(obj[center])>0)
{ tmp=obj[left];
obj[left]=obj[center];
obj[center]=tmp;
}
if(obj[left].compareTo(obj[right])>0)
{ tmp=obj[left];
obj[left]=obj[right];
obj[right]=tmp;
}
if(obj[center].compareTo(obj[right])>0)
{tmp=obj[center];
obj[center]=obj[right];
obj[center]=tmp;
}
//将关键元置于数组的倒数第二个
tmp=obj[center];
obj[center]=obj[right-1];
obj[right-1]=tmp;
}
}
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
作者:
老尸
时间:
2015-1-20 17:06
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者:
灵魂腐蚀
时间:
2015-1-27 09:26
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者:
简单生活
时间:
2015-2-2 22:03
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
小女巫
时间:
2015-2-7 09:59
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者:
分手快乐
时间:
2015-2-7 11:40
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
谁可相欹
时间:
2015-2-14 21:07
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者:
因胸联盟
时间:
2015-3-2 10:05
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
只想知道
时间:
2015-3-6 08:04
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者:
第二个灵魂
时间:
2015-3-13 07:06
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者:
莫相离
时间:
2015-3-20 15:29
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2