二分查找2

 1 package com.wh.ObjectHomeWork;
 2 
 3 import java.util.Arrays;
 4 import java.util.Scanner;
 5 
 6 public class CharArray {
 7     private char[] words;
 8 
 9     public CharArray(char[] words) { // 构造方法
10         this.words = words;
11     }
12 
13     public void sort() { // 对数组进行冒泡排序
14         for (int i = 0; i < words.length - 1; i++) {
15             for (int j = 0; j < words.length - 1 - i; j++) {
16                 if (words[j] > words[j + 1]) {
17                     char t = words[j];
18                     words[j] = words[j + 1];
19                     words[j + 1] = t;
20                 }
21             }
22         }
23     }
24 
25     public int query(char key) {
26         int index = 0;
27         for (int i = 0; i < words.length; i++) {
28             if (words[i] == key) {
29                 index = i;
30                 break;
31             }
32             if ((i == words.length - 1) && (words[i] != key)) {
33                 index = -1;
34             }
35         }
36         return index;
37     }
38 
39     public int search(char key) {
40         int start = 0, ends = words.length - 1;
41         int middle;
42         int index = 0;
43         for (;;) {
44             middle = (ends + start) / 2 + (ends + start) % 2;
45             if (words[middle] == key) {
46                 index = middle;
47                 break;
48             } else if (key < words[middle] && key >= words[start]) {
49                 ends = middle;
50             } else if (key > words[middle] && key <= words[ends]) {
51                 start = middle;
52             } else {
53                 index = -1;
54                 break;
55             }
56         }
57         return index;
58     }
59 
60     public static void main(String[] args) {
61         Scanner sc = new Scanner(System.in);
62         System.out.println("请随机输入一个数字:");
63         int str;
64         char num;
65         for (;;) {
66             str = sc.nextInt();
67             if (str > 0 && str < 65535) {
68                 num = (char) str;
69                 break;
70             } else {
71                 System.out.println("请重新输入一个数字:");
72             }
73         }
74         System.out.println("要查找的字符是:" + num);
75         char[] arr = "qwertyuiopasdfghjklzxcvbnm".toCharArray();
76         CharArray c1 = new CharArray(arr);
77         int index2 = c1.query(num);
78         System.out.println("排序前的索引是:" + index2);
79         System.out.println("排序前:" + Arrays.toString(arr));
80 
81         c1.sort();
82         System.out.println("排序后:" + Arrays.toString(arr));
83         int index = c1.search(num);
84         System.out.println("排序后的索引是" + index);
85         sc.close();
86     }
87 }

 

posted @ 2016-09-19 21:05  奋斗的少年WH  阅读(125)  评论(0编辑  收藏  举报