java中有序数组比无序数值好_java面向对象的有序数组和无序数组的比较

packageaa;classArray{//定义一个有序数组

private long[] a;//定义数组长度

private intnElems;//构造函数初始化

public Array(intmax){

a= new long[max];

nElems= 0;

}//size函数

public intsize(){returnnElems;

}//定义添加函数

public void insert(longvalue){//将value赋值给数组成员

a[nElems] =value;//然后将数组长度加一

nElems ++;longtemp;//用冒泡法排序

for(int i = 0; i < nElems - 1; i ++)

{for(int j = 0; j < nElems - 1 - i; j++)

{if(a[j] > a[j + 1])

{

temp=a[j];

a[j]= a[j + 1];

a[j+ 1] =temp;

}

}

}

}//定义查找方法

public int find(longsearchKey){//因为是有序数组,我们可以用二分法来查找时间为 O(logN),如果线性查找则为O(N)//下限

int lowerBound = 0;//上限

int upperBound = nElems -1;//中间值

intcurIndex;while(true)

{

curIndex= (lowerBound + upperBound) / 2;if(a[curIndex] ==searchKey)

{returncurIndex;

}else if(lowerBound >upperBound)

{returnnElems;

}else{if(a[curIndex] >searchKey)

{

upperBound= curIndex -1;

}else{

lowerBound= curIndex + 1;

}

}

}

}//定义删除方法

public boolean delete(longvalue){int index =find(value);if(index ==size())

{return false;

}else{for(int i = index; i < size(); i++)

{

a[i]= a[i + 1];

}

nElems--;return false;

}

}//定义显示方法

public voiddisplay(){for(int j = 0; j < nElems; j++)

{

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

}

System.out.println("");

}

}public classArr {public static voidmain(String[] args)

{int maxSize = 100;

Array arr= newArray(maxSize);

arr.insert(77);

arr.insert(99);

arr.insert(44);

arr.insert(55);

arr.insert(22);

arr.insert(88);

arr.insert(11);

arr.insert(22);

arr.insert(66);

arr.insert(33);

arr.display();int searchKey = 54;if(arr.find(searchKey) !=arr.size())

{

System.out.println("found" +searchKey);

}else{

System.out.println("cant find" +searchKey);

}

arr.delete(22);

arr.delete(55);

arr.delete(99);

arr.display();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值