分手快乐 发表于 2015-1-18 11:12:18

来看疾速排序算法的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)<0)  {}
              while(obj[--j].compareTo(obj)>0)   {}
             //互换
              if(i<j)
              { tmp=obj;
                 obj=obj;
                 obj=tmp;
              }
              else  break;
          }
          //将关键值与i指向的值互换
          tmp=obj;
          obj=obj;
          obj=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.compareTo(obj)>0)
       { tmp=obj;
          obj=obj;
          obj=tmp;
       }
       if(obj.compareTo(obj)>0)
       { tmp=obj;
          obj=obj;
          obj=tmp;
       }
       if(obj.compareTo(obj)>0)
       {tmp=obj;
          obj=obj;
          obj=tmp;
       }
       //将关键元置于数组的倒数第二个
        tmp=obj;
       obj=obj;
       obj=tmp;
   }
}

还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。

老尸 发表于 2015-1-20 17:06:38

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

灵魂腐蚀 发表于 2015-1-27 09:26:35

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

简单生活 发表于 2015-2-2 22:03:46

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

小女巫 发表于 2015-2-7 09:59:32

另外编写和运行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:01

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

谁可相欹 发表于 2015-2-14 21:07:23

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

因胸联盟 发表于 2015-3-2 10:05:02

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

只想知道 发表于 2015-3-6 08:04:40

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

第二个灵魂 发表于 2015-3-13 07:06:15

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

莫相离 发表于 2015-3-20 15:29:34

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
页: [1]
查看完整版本: 来看疾速排序算法的JAVA完成