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();
}
}
總結
以上是生活随笔為你收集整理的java中有序数组比无序数值好_java面向对象的有序数组和无序数组的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详细关闭iiop方法_疏通暖气片堵塞的方
- 下一篇: php+使用go编译,golang如何编