码迷,mamicode.com
首页 > 其他好文 > 详细

130242014070 张宇 第3次实验

时间:2017-11-20 19:14:43      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:实践   理解   算法   删除   实验目的   重复   return   arraylist   set   

一、实验目的

1.理解不同体系结构风格的具体内涵。

2.学习体系结构风格的具体实践。

二、实验环境

硬件: (依据具体情况填写)

软件:Java或任何一种自己熟悉的语言

三、实验内容

 

“上下文关键字”KWIC(Key Word in Context,文本中的关键字)检索系统接受有序的行集合:每一行是单词的有序集合;每一个单词又是字母的有序集合。通过重复地删除航中第一个单词,并把它插入行尾,每一行可以被“循环地移动”。KWIC检索系统以字母表的顺序输出一个所有行循环移动的列表。

尝试用不同的策略实现这个系统。选择2-3种体系结构风格来实现。

四、实验步骤:

采用主/子程序的风格

1、体系结构图:

技术分享图片

2、写出主要的代码

排序算法:

 1     public static ArrayList<String[]> sort(ArrayList<String[]> a){
 2         String[] temp=null;
 3         for (int i = 0; i < a.size(); i++) {
 4             for (int j = i; j < a.size()-1; j++) {
 5                 if (a.get(i)[0].charAt(0)>a.get(j+1)[0].charAt(0)) {
 6                     temp=a.get(i);
 7                     a.set(i, a.get(j+1));
 8                     a.set(j+1, temp);
 9                 }
10             }
11         }
12         
13         return a;
14     }

 

3、显示结果:

技术分享图片

二、管道、过滤器风格

1.体系结构图

技术分享图片

2.主要代码:

 1 private void sort(List<String> lines) { //排序
 2         int size = lines.size();
 3 
 4         for (int i = (size / 2 - 1); i >= 0; i--)
 5             siftDown(lines, i, size);
 6 
 7         for (int i = (size - 1); i >= 1; i--) {
 8             Object tmp = lines.get(0);
 9             lines.set(0, lines.get(i));
10             lines.set(i, (String) tmp);
11             siftDown(lines, 0, i);
12         }
13     }
14 
15     private void siftDown(List<String> lines, int root, int bottom) {
16         int max_child = root * 2 + 1;
17 
18         while (max_child < bottom) {
19             if ((max_child + 1) < bottom)
20                 if (((String) lines.get(max_child + 1))
21                         .compareTo((String) lines.get(max_child)) > 0)
22                     max_child++;
23 
24             if (((String) lines.get(root)).compareTo((String) lines
25                     .get(max_child)) < 0) {
26                 Object tmp = lines.get(root);
27                 lines.set(root, lines.get(max_child));
28                 lines.set(max_child, (String) tmp);
29                 root = max_child;
30                 max_child = root * 2 + 1;
31             } else
32                 break;
33         }
34     }

3..运行结果

技术分享图片

五、实验总结

 

130242014070 张宇 第3次实验

标签:实践   理解   算法   删除   实验目的   重复   return   arraylist   set   

原文地址:http://www.cnblogs.com/izhangyu/p/7867431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!