posts - 97,  comments - 93,  trackbacks - 0
呵呵 不知道写的如何。但是总感觉,在UltraEdit下写,还是很爽的,或许是因为学校办公室的电脑内存太小的缘故吧。
 1 /**
 2  * @the author:Nicky(EN) QuQiang(CH)
 3  * @the data :2006.8.27
 4  **/
 5 // 当然本算法最好编制成两到3个文件
 6 
 7 public class HalfSearch{
 8     private static int lengthValue;
 9     private static byte  flag=0;
10     private static int SearchValue=0;
11    
12     //定义返回数组类型的方法  此方法给出的public权限
13     public static int[] Sort(int[] b){
14         for(int i=0;i<b.length;i++){
15             for(int j=i+1;j<b.length;j++){
16                 int temp;
17                 if(b[i]>b[j]){
18                     temp=b[i];b[i]=b[j];b[j]=temp;
19                 }
20             }
21         }
22         System.out.println("\u6309\u5e8f\u6392\u5217\u4e3a:");  //对应汉字为     按序排列为:
23         for(int i=0;i<b.length;i++){
24           System.out.println(b[i]);
25         }                            //冒泡排序法排序  或直接使用JDK提供的sort()函数进行排列
26         return b;
27     }
28 
29     //折半查找
30     private static int Half(int[] a){
31         int m=a.length,k,n=1;
32         System.out.println("\u5f53\u524d\u5171\u8f93\u5165"+m+"\u4e2a\u6570\u7b26"); //对应汉字为  "当前共输入" 个数符
33         int index=0;
34         if(m==1){
35            if(a[0]==SearchValue){
36              flag=1;
37              index=1;
38            }
39            else{
40               flag=0;
41               index=1;
42            }
43         }             //考虑到用户除输入查找数符外,只输入一个数符,即n=m=1
44         for(int i=1;;i++){
45           if(n<m){
46              index+=1;
47              k=(n+m)/2;
48              if(a[k-1]>SearchValue){
49                  m=k-1;      //此时定义最大值为当前中间值的前一个值  //第 次查找未成功,当前值大于SearchValue
50                  System.out.println("\u7b2c"+index+"\u6b21\u67e5\u627e\u672a\u6210\u529f\uff0c \u5f53\u524d\u503c\u5927\u4e8e"+SearchValue);//否则将9改为变量
51              }else if(a[k-1]<SearchValue){
52                  n=k+1;          //未找到,则在后半区间进行查找  //小于
53                  System.out.println("\u7b2c"+index+"\u6b21\u67e5\u627e\u672a\u6210\u529f\uff0c \u5f53\u524d\u503c\u5c0f\u4e8e"+SearchValue);//否则将9改为变量
54              }else{
55                  System.out.println("\u67e5\u627e\u6210\u529f");  //查找成功
56                  flag=1;
57                  break;
58              }
59            }else break;
60          }
61         return index;
62     }                      //也可以定义一个用户需输入的查找值
63    
64     //使用说明
65    private static void usage(){
66       System.out.println("Usage:java HalfSearch program [the number you search] [the array list you give]");
67       System.out.println("\t [the number you search] the only number you want to use it to test this program");
68       System.out.println("\t [the Array list you give] A array list may be it contains it may be not");
69       System.exit(0);
70    }
71       
72     //主函数的功能  传入查找数组
73     public static void main(String[] args){
74         if(args.length==0||args.length==1){
75             usage();
76             System.exit(0);
77         }
78         SearchValue=Integer.parseInt(args[0]);
79         lengthValue=args.length;
80         int index=0;
81         int[] TransArray=new int[args.length-1];
82         for(int i=1;i<args.length;i++){
83             TransArray[i-1]=Integer.parseInt(args[i]);
84             System.out.println(TransArray[i-1]);
85         }
86         index=HalfSearch.Half(HalfSearch.Sort(TransArray));
87         //输出查询结果
88         switch(flag){
89              //在本次折半查找中共经过  次查找,未成功   成功
90             case 0: System.out.println("\u5728\u672c\u6b21\u6298\u534a\u67e5\u627e\u4e2d\u5171\u7ecf\u8fc7"+index+"\u6b21\u67e5\u627e,\u672a\u6210\u529f");break;
91             case 1: System.out.println("\u5728\u672c\u6b21\u6298\u534a\u67e5\u627e\u4e2d\u5171\u7ecf\u8fc7"+index+"\u6b21\u67e5\u627e,\u6210\u529f");break;
92         }
93         System.exit(0);
94     }
95 }


posted on 2006-08-27 17:02 wqwqwqwqwq 阅读(636) 评论(0)  编辑  收藏 所属分类: Data Structure && Algorithm

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789




常用链接

留言簿(10)

随笔分类(95)

随笔档案(97)

文章档案(10)

相册

J2ME技术网站

java技术相关

mess

搜索

  •  

最新评论

阅读排行榜

校园梦网网络电话,中国最优秀的网络电话