首页 > 代码库 > 二分查找2

二分查找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 }

 

二分查找2