博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有序数组的二分查找
阅读量:5141 次
发布时间:2019-06-13

本文共 3193 字,大约阅读时间需要 10 分钟。

演示:有序数组的二分查找方法  1 /**  2  * 测试类  3  * @author mackxu  4  *  5  */  6 public class MyArrayApp {  7       8     public static void main(String[] args) {  9         // TODO Auto-generated method stub 10         MyArray arr = new MyArray(10); 11         //System.out.print(arr.find(11));            //out: 0 12         //arr.display(); 13         arr.insert(3); 14         arr.insert(13); 15         arr.insert(35); 16         arr.insert(29); 17         arr.insert(15); 18         arr.insert(66); 19         arr.insert(89); 20          21         arr.display(); 22         arr.delete(13); 23         arr.display(); 24          25         //double [] a = new double[4];        //0.0 26         //String [] a = new String[4];        //null 27         boolean[] a = new boolean[4];        //false 28         for (boolean e:a) 29             System.out.print(e+" | "); 30     } 31  32 } 33  34 /** 35  * 有序数组 36  * 二分查找法 37  * 小结: 38  * 数组中删除元素只需要向前移动位置就行 39  * for迭代器可以输出数组 40  * 数组建立时有默认初值 41  * double[] a = new double[4];        //0.0 42  * String[] a = new String[4];            //null 43  * boolean[] a = new boolean[4];        //false 44  * @author mackxu 45  * 46  */ 47 class MyArray { 48      49     private int[] a; 50     private int nElems = 0; 51     private int spaceSize; 52      53     public MyArray(int max) { 54         //默认情况是a中包含max个0 55         a = new int[max];            //创建max元素的数组 56         spaceSize = max;            //开辟的空间大小 57     } 58     /** 59      * @return 返回数组的元素个数 60      */ 61     public int size() { 62          63         return nElems;         64     } 65      66     //向数组中添加元素 67     public void insert(int value) { 68         //判断数组是否已经满了 69         if (spaceSize <= nElems){ 70             System.out.println("已经满了,不能再加了!!"); 71             return; 72         } 73         int i; 74         //找到插入的位置 75         for(i=0; i
value) 77 break; 78 } 79 //腾出位置等待插入 80 for (int k = nElems; k>i; k--) { 81 a[k] = a[k-1]; 82 } 83 //插入元素 84 a[i] = value; 85 nElems ++; 86 } 87 //删除指定的元素 88 public boolean delete(int value) { 89 90 //查找要删除的数组元素下标 91 int i = find(value); 92 if (i == size()) { 93 System.out.println("删除错误:数组中不存在值为"+value+"元素!!"); 94 return false; 95 } 96 //从下标为i的元素以后都向前移动一个位置 97 for (int j=i+1; j
rBound) 121 return nElems;122 if (a[curIn] < value) {123 lBound = curIn + 1;124 } else {125 rBound = curIn - 1;126 }127 }128 }129 130 /**131 * 输出从小到大的数组元素132 */133 public void display() {134 if (nElems == 0) {135 System.out.println("一个元素也没有");136 return;137 }138 /*for (int elem : a) {139 System.out.print(elem+" ");140 }*/141 for (int i = 0; i < nElems; i++) {142 System.out.print(a[i]+" ");143 }144 System.out.println(); 145 }146 }

转载于:https://www.cnblogs.com/mackxu/archive/2012/10/26/2741166.html

你可能感兴趣的文章
关于异步reset
查看>>
索引优先队列的工作原理与简易实现
查看>>
SPOJ - DISUBSTR Distinct Substrings (后缀数组)
查看>>
并发编程简介
查看>>
第五次作业(最大公约数,最小公倍数)
查看>>
C++两水杯量出所需水量的小算法
查看>>
[面试真题] LeetCode:Same Tree
查看>>
iOS:quartz2D绘图
查看>>
测试步骤
查看>>
perl6 Socket
查看>>
APP 内发送邮件
查看>>
进度条
查看>>
使用命令修改ip地址
查看>>
mac平台安装类似yum的工具
查看>>
hdu3437 划分树 区间内小于第K大的值得和
查看>>
P1113 杂务
查看>>
20155320《网络对抗》MSF基础应用
查看>>
第七章 软件测试 课后习题
查看>>
一篇非常适合git入门的文章
查看>>
四级英语day10
查看>>