仓酷云

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

[学习教程] 来看疾速排序算法的JAVA完成

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

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

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

x
对于一个大型项目,如果用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: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服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
小女巫 该用户已被删除
5#
发表于 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而写的。
分手快乐 该用户已被删除
6#
 楼主| 发表于 2015-2-7 11:40:01 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
谁可相欹 该用户已被删除
7#
发表于 2015-2-14 21:07:23 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
因胸联盟 该用户已被删除
8#
发表于 2015-3-2 10:05:02 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
只想知道 该用户已被删除
9#
发表于 2015-3-6 08:04:40 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
第二个灵魂 该用户已被删除
10#
发表于 2015-3-13 07:06:15 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
莫相离 该用户已被删除
11#
发表于 2015-3-20 15:29:34 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 05:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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