有序数组和二分法
来源:互联网 发布:手机淘宝4.0 编辑:程序博客网 时间:2024/06/05 10:37
类
public class OrderArray {private long[] a;private int nElems;public OrderArray(int max){a=new long[max];nElems=0;}public int size(){return nElems;}//线性查找public void insert(long value){int j;for(j=0;j<nElems;j++)if(a[j]>value) break;for(int k=nElems;k>j;k--)a[k]=a[k-1];a[j]=value;nElems++;}//二分查找public int find(long searchKey){int lowerBound=0;int upperBound=nElems-1;int curIn;while(true){curIn=(lowerBound+upperBound)/2;if(a[curIn]==searchKey)return curIn;else if(lowerBound>upperBound)//没有找到return nElems;//返回大于最大索引整数else{if(a[curIn]<searchKey)lowerBound=curIn+1;else upperBound=curIn-1;}}}public boolean delete(long value){int j=find(value);if(j==nElems){return false;}else{for(int k=j;k<nElems;k++){a[k]=a[k+1];}nElems--;return true;}}public void display(){for(int i=0;i<nElems;i++){System.out.print(a[i]+" ");}System.out.println();}}
主程序
public class OrderedApp {public static void main(String[] args){int maxSize=100;OrderArray array;array=new OrderArray(maxSize);array.insert(77);array.insert(99);array.insert(44);array.insert(55);array.insert(22);array.insert(88);array.insert(11);array.insert(0);array.insert(66);array.insert(33);int searchKey=55;if(array.find(searchKey)!=array.size())System.out.println("找到了"+searchKey);else System.out.println("没找到"+searchKey);array.display();array.delete(0);array.delete(55);array.delete(99);array.display();}}
0 0
- 有序数组和二分法
- 有序数组和二分法
- 有序数组和二分法查找
- 二分法查找有序数组
- 有序数组搜索二分法
- 二分法查找有序数组
- 二分法查找有序数组
- 二分法查找有序数组元素
- (二)有序数组的二分法查找
- 二分法在有序数组中进行查找
- 有序数组的二分法查找关键字
- 有序数组用二分法查询位置
- 二分法查找有序数组中的元素
- 【数据结构与算法】有序数组二分法查找
- 数组、数组操作、无序数组、有序数组、二分法
- 数据结构-02 数组(有序数组) -二分法查找(折半查找)
- 二分法计算有序数组中数字出现的次数
- (笔记)数组 插入式排序法 有序查找二分法
- .net学习之messagebox的各种枚举
- pcl配置中遇到的问题
- JQuery基础attribute
- html 代码初识——<a>标签
- UVa 11078 - Open Credit System(维护最大值)
- 有序数组和二分法
- OC_交叉引入头文件问题
- hadoop Hdfs文件上传下载
- unbutu下安装与配置phpmyadmin
- 1057. Stack (30) - 树状数组
- HDU 1016 Prime Ring Problem
- 旋转数组
- 面试题10_二进制中1的个数
- RobotFramework+Selenium2Library环境安装