二分查找

 1 package com.wh.ObjectHomeWork;
 2 
 3 import java.util.Arrays;
 4 
 5 public class CharArray {
 6     private char[] words;
 7 
 8     public CharArray(char[] words) { // 构造方法
 9         this.words = words;
10     }
11 
12     public void sort() { // 对数组进行冒泡排序
13         for (int i = 0; i < words.length - 1; i++) {
14             for (int j = 0; j < words.length - 1 - i; j++) {
15                 if (words[j] > words[j + 1]) {
16                     char t = words[j];
17                     words[j] = words[j + 1];
18                     words[j + 1] = t;
19                 }
20             }
21         }
22     }
23 
24     public int search(char key){
25         int start=0,ends=words.length-1;
26         int middle;
27         int index=0;
28         for(;;){
29             middle=(ends+start)/2+(ends+start)%2;
30             if(words[middle]==key){
31                 index=middle;
32                 break;
33             }else if(key<words[middle]&&key>=words[start]){
34                 ends=middle;
35             }else if(key>words[middle]&&key<=words[ends]){
36                 start=middle;
37             }else{
38                 index=-1;
39                 break;
40             }
41             System.out.print(index+",");
42         }        
43         return index;
44     }
45 
46     public static void main(String[] args) {
47         char[] arr = "qwertyuiopasdfghjklzxcvbnm".toCharArray();
48         CharArray c1 = new CharArray(arr);
49         System.out.println("排序前:" + Arrays.toString(arr));
50         c1.sort();
51         System.out.println("排序后:" + Arrays.toString(arr));
52         char num=150;
53         int index=c1.search(num);
54         System.out.println(index);
55     }
56 }
1 排序前:[q, w, e, r, t, y, u, i, o, p, a, s, d, f, g, h, j, k, l, z, x, c, v, b, n, m]
2 排序后:[a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
3 -1

 

posted @ 2016-09-19 18:08  奋斗的少年WH  阅读(148)  评论(0)    收藏  举报