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 }