数组的二分查找法查找元素以及查处删除元素
来源:互联网 发布:matlab复制一个矩阵 编辑:程序博客网 时间:2024/04/30 09:40
package 算法demo;public class 二分法 {public static void main(String[] args) {// TODO Auto-generated method stub int maxSize=100; OrdArray arr; arr=new OrdArray(maxSize); arr.insert(1); arr.insert(2); arr.insert(3); arr.insert(4); arr.insert(5); arr.insert(6); arr.insert(7); arr.insert(8); arr.insert(9); arr.insert(0); int searchKey=55; //search for item if(arr.find(searchKey)!=arr.size()) System.out.print("Found"+ searchKey); else System.out.print("can not find it" +searchKey); arr.display(); arr.delete(7); arr.delete(5); arr.display();}}class OrdArray{private long[] a; //ref to array aprivate int nElems;//number of data items//.................................public OrdArray(int max){ //constructora=new long[max];nElems=0;}//............................public int size(){return 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;//find itelse if(lowerBound >upperBound)return nElems; //can not find itelse{if(a[curIn]<searchKey)lowerBound =curIn+1; //it is in upper halfelseupperBound=curIn-1;//it is in lower half}//end else divide rang}//end while}//end find()public void insert(long value){ //put element into arrayint j;for(j=0;j<nElems;j++) //find where it goesif(a[j]>value) //(linear search)break;for(int k=nElems;k>j;k--)//move bigger ones upa[k]=a[k-1];a[j]=value; //insert itnElems++; // increment size}//end insert()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;}}//end delete()public void display(){for(int j=0;j<nElems;j++)System.out.print(a[j]+"");System.out.println("");}}
0 0
- 数组的二分查找法查找元素以及查处删除元素
- 有序(循环)数组查找元素-二分查找法
- 数组查找元素及其删除元素
- Java数组-二分查找法用于元素插入有序数组,并获取元素插入的位置
- 顺序元素的二分查找
- NYOJ练习题 删除元素(二分查找)
- NYOJ 776 删除元素(二分查找)
- 二分查找法的元素查找次数求解
- 带有重复元素的有序数组二分查找
- [二分]1159: 查找元素
- 数组元素的查找(折半查找)
- C#-数组的元素查找
- 查找数组重复的元素
- 基本查找:数组元素无序(从头找到尾) * 二分查找(折半查找):数组元素有序
- 成绩排名\数组排序\素数查找\元素删除
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有
- 查找顺序数组中元素第一次出现的位置(二分查找)
- 微策略面试题:在旋转后的数组中查找元素(二分查找)
- navicat 连接mysql时报错1045
- 《javascript设计模式与开发实践》阅读笔记(12)—— 享元模式
- resultMap和resultType引起的错误
- .net中input和button点击刷新问题
- 一个java面试官的感慨来源于网络
- 数组的二分查找法查找元素以及查处删除元素
- Python高级编程-13优化:解决方案
- react-native遇到依赖module问题
- MxNet系列——how_to——multi_devices
- 关于js跨域JSONP的使用
- OpenCV documentation 官方文档
- HTTP状态码
- Android模板设计模式之 - 构建整个应用的BaseActivity
- spring(4)---加载spring容器的3种方式