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

 

转载于:https://www.cnblogs.com/1020182600HENG/p/5886656.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值