public class OrderArray {
// 数组
private long [] arr;
// 数组中有效数据的大小
private int elems;
public OrderArray(){
arr=new long[50];
}
public OrderArray(int max) {
arr = new long[max];
}
/**
* 插入数据
* @param value
*/
public void insert(long value){
int i=0;
for(i=0;i<elems;i++){
if(arr[i]>value){
break;
}
}
for(int j=elems;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
elems++;
}
// 显示数据
public void display() {
for (int i = 0; i < elems; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
/**
* 查找下标
* @param searchKey
* @return
*/
public int findIndex(long searchKey){
int i;
for(i=0;i<elems;i++){
if(arr[i]==searchKey){
break;
}
}
if(i==arr.length){
return -1;
}
else {
return i;
}
}
/**
* 二分法查找
* @param searchKey
* @return
*/
public int binaryFindIndex(long searchKey){
int ins=0;//中间值
int low=0;//下标
int pow=elems;//上标
while(true){
ins=(low+pow)/2;
if(arr[ins]==searchKey){
return ins;
}else if(low>pow){
return -1;
}else{
if(arr[ins]>searchKey){
pow=ins-1;
}else{
low=ins+1;
}
}
}
}
public void delet(long deleteKey){
if(binaryFindIndex(deleteKey)==-1){
System.out.println("查找不到指定数据,删除失败");
}else{
for(int i=binaryFindIndex(deleteKey);i<elems;i++){
arr[i]=arr[i+1];
}
}
}
// 修改数据
public void change(long oddValue, long newValue) {
if(binaryFindIndex(oddValue) == -1) {
System.out.println("查找不到指定数据,修改失败");
} else {
arr[binaryFindIndex(oddValue)] = newValue;
}
}
}
java 算法(1)-有序数组
最新推荐文章于 2024-07-20 23:55:03 发布