- 浏览: 11319 次
- 性别:
- 来自: 天津
最新评论
Entity的配套排序,有直接插入排序,快速排序,冒泡排序,希尔排序,好像没别的排序了。
书上怎么教的我就怎么写的,只要是人话,翻译机器语言还是可以的,虽然用了快一天的时间,不过收获不小,不过好像快速排序、希尔排序和书上的差好多,它没我代码那么多,忘了说了,英文丑的可以,知道标准的留言转告下,高手勿喷啊。下面是测试代码
package com.util; public class Algorithm { //直接插入 public static Entity[] injectionSort(Entity[] entities) { int j; int total = entities.length; Entity temp; for(int i = 1; i<total; i++) { for(j = 0; j<i; j++) { if(entities[i].compareTo(entities[j]) < 0) { temp = entities[j]; entities[j] = entities[i]; entities[i] = temp; } } } return entities; } //冒泡 public static Entity[] bubbleSort(Entity[] entities) { int j; int total = entities.length; Entity temp; for(int i = 1; i < total; i++) { for( j = total - 1; j >= i ;j--) { if(entities[j].compareTo(entities[j-1]) < 0 ) { temp = entities[j-1]; entities[j-1] = entities[j]; entities[j] = temp; } } } return entities; } //快速排序法 public static Entity[] quickSort(Entity[] entities) { Entity temp; int total = entities.length; if(total == 1) { return entities; } int low = 0; int high = total - 1 ; int index = low; while(low < high) { //寻找右面比要比较值大的数 while(entities[index].compareTo(entities[high]) < 0) { high--; } if(entities[index].compareTo(entities[high]) > 0) { temp = entities[index]; entities[index] = entities[high]; entities[high] = temp; index = high; } //寻找左面比要比较值小的数 while(entities[index].compareTo(entities[low]) > 0) { low++; } if(entities[index].compareTo(entities[low]) < 0) { temp = entities[index]; entities[index] = entities[low]; entities[low] = temp; index = low; } } int i; if(index == total-1) { Entity[] leftEntities = new Entity[total-1]; for(i = 0; i<total-1; i++) { leftEntities[i] = entities[i]; } leftEntities = quickSort(leftEntities); for(i=0; i<leftEntities.length; i++) { entities[i] = leftEntities[i]; } return entities; }else if(index == 0) { Entity[] rightEntities = new Entity[total-1]; for(i = 1; i<total; i++) { rightEntities[i-1] = entities[i]; } rightEntities = quickSort(rightEntities); for(i=0; i<rightEntities.length; i++) { entities[index+i+1] = rightEntities[i]; } return entities; } else { Entity[] leftEntities = new Entity[index]; i = 0; for(; i<index; i++) { leftEntities[i] = entities[i]; } Entity[] rightEntities = new Entity[total-index-1]; for(i = index+1; i<total; i++) { rightEntities[i-index-1] = entities[i]; } leftEntities = quickSort(leftEntities); rightEntities = quickSort(rightEntities); for(i=0; i<leftEntities.length; i++) { entities[i] = leftEntities[i]; } for(i=0; i<rightEntities.length; i++) { entities[index+i+1] = rightEntities[i]; } return entities; } } //shell排序 public static Entity[] shellSort(Entity[] entities, int d) { int total = entities.length; //d为每次的增量 d = (d+1)/2; if(d<3) { entities = injectionSort(entities); return entities; } //m为每个小组中的最多元素数量 int m ; if(total%d == 0)m = total/d; else m = total/d+1; Entity[] temp = null; for(int j = 0; j<d; j++) { //n为每个小组中的实际元素数量 int n = m; if((n-1)*d+j >= total) n--; temp = new Entity[n]; for(int i = 0; i<n; i++) { temp[i] = entities[d*i+j]; } temp = injectionSort(temp); for(int i = 0; i<n; i++) { entities[d*i+j] = temp[i]; } temp = null; } entities = shellSort(entities,d); return entities; } }
书上怎么教的我就怎么写的,只要是人话,翻译机器语言还是可以的,虽然用了快一天的时间,不过收获不小,不过好像快速排序、希尔排序和书上的差好多,它没我代码那么多,忘了说了,英文丑的可以,知道标准的留言转告下,高手勿喷啊。下面是测试代码
package com.util; import java.util.Date; public class TestAlgorithm { @Test public void testInjectionSort() { Entity e1 = new Entity.Builder(4).setC('b').build(); Entity e2 = new Entity.Builder(1).setC('a').build(); Entity e3 = new Entity.Builder(1).setC('c').build(); Entity e4 = new Entity.Builder(3).setC('a').build(); Entity[] entities = {e1,e2,e3,e4}; for(Entity e : entities ) { System.out.println(e); } entities = Algorithm.injectionSort(entities); System.out.println(); for(Entity e : entities ) { System.out.println(e); } } @Test public void testBubbleSort() { Entity e1 = new Entity.Builder(4).setC('b').build(); Entity e2 = new Entity.Builder(1).setC('a').build(); Entity e3 = new Entity.Builder(1).setC('c').build(); Entity e4 = new Entity.Builder(3).setC('a').build(); Entity[] entities = {e1,e2,e3,e4}; for(Entity e : entities ) { System.out.println(e); } entities = Algorithm.bubbleSort(entities); System.out.println(); for(Entity e : entities ) { System.out.println(e); } } @Test public void testQuickSort() { Entity e1 = new Entity.Builder(49).setC('b').build(); Entity e2 = new Entity.Builder(38).setC('a').build(); Entity e3 = new Entity.Builder(65).setC('c').build(); Entity e4 = new Entity.Builder(97).setC('a').build(); Entity e5 = new Entity.Builder(76).build(); Entity e6 = new Entity.Builder(13).build(); Entity e7 = new Entity.Builder(27).build(); Entity e8 = new Entity.Builder(49).build(); Entity[] entities = {e1,e2,e3,e4,e5,e6,e7,e8}; for(Entity e : entities ) { System.out.println(e); } entities = Algorithm.quickSort(entities); System.out.println(); for(Entity e : entities ) { System.out.println(e); } } @Test public void testShellSort() { Entity e1 = new Entity.Builder(49).build(); Entity e2 = new Entity.Builder(38).setC('a').build(); Entity e3 = new Entity.Builder(65).setC('c').build(); Entity e4 = new Entity.Builder(97).setC('a').build(); Entity e5 = new Entity.Builder(76).build(); Entity e6 = new Entity.Builder(13).build(); Entity e7 = new Entity.Builder(27).build(); Entity e8 = new Entity.Builder(49).build(); Entity e9 = new Entity.Builder(55).build(); Entity e10 = new Entity.Builder(4).build(); Entity[] entities = {e1,e2,e3,e4,e5,e6,e7,e8,e9,e10}; for(Entity e : entities ) { System.out.println(e); } entities = Algorithm.shellSort(entities,entities.length); System.out.println(); for(Entity e : entities ) { System.out.println(e); } } }
发表评论
-
第七条 避免使用终结方法
2011-03-22 12:38 691try - finally 不要过分依赖finally语句关 ... -
第八条 覆盖equals是要遵守通用的约定
2011-03-22 12:34 679第八条 覆盖equals是要遵守通用的约定 覆盖equals必 ... -
第六条 消除过期的对象引用
2011-03-22 12:32 974第六条 消除过期的对象引用 做个简单不能再简单的栈,实现put ... -
第五条 避免创建不必要的对象
2011-03-21 17:22 713第五条 避免创建不必要的对象 (1) String s = ... -
读完部分effective java 自己写的类Entity
2011-03-19 23:06 868自己写的Entity类,有四个属性,int,char,Stin ... -
小菜鸟声明
2011-03-18 11:38 602本人能力有限,可以说是小菜鸟,看完的东西,解释出来肯定有不正确 ... -
effective java中待理解的条目
2011-03-18 11:37 681effective java是本十分优秀的书,所以有些地方还是 ... -
第三条 用私有的构造器或者枚举类型强化singleton属性
2011-03-18 11:36 893第三条 用私有的构造器或者枚举类型强化singleton属性 ... -
第一条 考虑用静态工厂方法代替构造器
2011-03-18 11:35 1110第一条 考虑用静态工厂方法代替构造器 静态工厂方法非设计模式 ... -
第二条 遇到多个构造器参数时要考虑用构建器
2011-03-17 11:46 728构造方法中传递的参数 ...
相关推荐
每个状态对应着算法的一个阶段,通过状态间的转换,实现算法的完整流程。VHDL代码通常包含实体和架构两部分,实体定义了电路的接口,包括输入和输出信号;架构则描述了电路的行为,即如何处理这些信号。 #### 实体...
`entity2id.txt` 文件是TransE模型中的关键组成部分,它通常包含了知识图谱中所有实体及其对应的唯一标识符(ID)。这些ID用于将实体名称转化为数值形式,以便在计算中使用。文件中每一行可能包含一个实体名称和对应...
总的来说,这个项目是一个很好的学习资源,涵盖了WPF界面设计、Entity Framework数据库操作以及基本的算法实现。对于想要提升WPF和Entity Framework技能的开发者来说,这是一个值得研究的案例。
在标签中,“trous_wavelet”再次强调了trous算法在小波变换中的应用,“多孔”则直接对应多孔trous算法的核心概念。这些标签为理解这个压缩包的内容提供了线索。 压缩包内的文件名“erd.txt”和“www.pudn.com.txt...
实体链接(Entity Linking)是自然语言处理中的一个重要任务,其目标是将文本中的实体提及(entity mention)映射到知识库中对应的实体对象。这一过程有助于理解文本内容,提取关键信息,并实现知识图谱的构建与完善...
ActivityNet-Entity数据集是专门为这一任务设计的,它提供了丰富的视频片段和对应的实体信息,为研究者提供了实验和开发的平台。 ActivityNet-Entity数据集是视频理解研究中的一颗璀璨明珠,它结合了ActivityNet的...
3. **MySQL数据库设计**:数据库设计通常包括模型类(Entity)和对应的Mapper/Repository文件,用于定义物流管理系统的数据结构,如货物信息、车辆信息、路线信息等。 4. **API接口设计**:Spring Boot支持RESTful ...
1. **调度实体 (sched_entity)**:在CFS中,调度实体是指进程或线程,是调度的基本单位。 2. **虚拟运行时间 (vruntime)**:每个调度实体的虚拟运行时间,用于衡量进程的实际运行情况。它是CFS中衡量公平性的重要...
在实际应用中,我们可能只有离散的时间点和对应的坐标,而插值算法(如线性插值或样条插值)能填充这些点之间的空缺,生成平滑的运动路径。Cesium的`Interpolation`模块提供了多种插值算法,可以用于生成平滑的轨迹...
`PmsystemApplication`作为启动类,`Controller`处理前端请求,`Entity`接收前端数据,`Mapper`对应MyBatis的XML文件处理数据库查询。`Services`层定义服务接口并实现,`Web`处理数据传输,`Resources`存放前端代码...
而在这个过程中,一个关键的前置问题就是实体解析(Entity Resolution),即确定不同数据集中的行是否对应于同一个实体。 实体解析是数据整合与清洗过程中的核心步骤,它旨在识别并合并来自不同源的同一实体的记录...
实体抽取第一步是进行命名实体识别(named entity recognition, NER),目前通用文档中识别,命名实体识别技术已经相对成熟,例如POS-tagging、Named Entity Recognition、Dependency Parsing等。 然而,这些技术存在...
同时,系统应具备良好的数据持久化能力,可以利用Entity Framework等ORM(对象关系映射)工具,方便地进行数据库操作。 为了确保系统的安全性和稳定性,.NET框架提供了身份验证、授权和异常处理机制。通过实施角色...
本文提出在实体识别中采用字典、在线知识库以及西南交通大学中文分词技术,并在实体链接中使用同义词词典、维基百科重定向以及改进的拼音编辑距离(PED)算法和最长公共子序列(LCS)的结合方法。在实体消歧方面,...
在CFS调度中,还引入了调度实体(sched entity)的概念,调度实体是调度的对象。每个进程的task_struct包含了调度实体成员变量se。引入调度实体是为了支持CFS组调度,一个组中可能包含1个或多个进程。 在多核系统中...
- 使用实体-关系(Entity-Relationship,简称ER)模型来表示实体、属性和它们之间的关系,这是数据库设计的重要阶段,有助于理解数据间的复杂关联。 6. **表设计** - 列出所有涉及的表,定义每个表的名称、字段名...
本篇文章介绍了一种针对嵌套命名实体识别(Nested Named Entity Recognition, NER)的监督多头自注意力神经网络模型。命名实体识别是自然语言处理(Natural Language Processing, NLP)中的一个重要任务,旨在识别...