数据结构二分法算法的步骤_数据结构和算法之:二分法demo

package com.js.ai.modules.pointwall.testxfz;

class OrdArray{

private long[] a;

private int nElems;

public OrdArray(int max) {

a=new long[max];

nElems=0;

}

public int size(){

return nElems;

}

//插入方法

public void insert(long value){

int j;

for(j=0;j

if(a[j]>value)

break;

}

for(int k=nElems;k>j;k--){

a[k]=a[k-1];

}

a[j]=value;

nElems++;

}

//删除方法

public boolean delete(long value){

int j=find(value);

if(j==nElems){

return false;

}else {

for(int k=j;k

a[k]=a[k+1];

}

nElems--;

return true;

}

}

//二分查找

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]

lowerBound=curIn+1;

}else {

upperBound=curIn-1;

}

}

}

}

public void display(){

for(int j=0;j

System.out.print(a[j]+" ");

}

System.out.print("");

}

}

public class OrdArrayTest {

public static void main(String[] args) {

int maxSize=100;

OrdArray arr;

arr=new OrdArray(maxSize);

arr.insert(77);

arr.insert(00);

arr.insert(11);

arr.insert(22);

arr.insert(88);

arr.insert(99);

arr.insert(33);

arr.insert(55);

arr.insert(44);

arr.insert(66);

int searchKey=55;

if(arr.find(searchKey)!=arr.size()){

System.out.println("Found:"+searchKey);

}else {

System.out.println("can not found:"+searchKey);

}

arr.display();

arr.delete(00);

arr.delete(55);

arr.delete(99);

System.out.println("\r\n===");

arr.display();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值