数组类
package com.company;
public class MyNewArray {
private long[] arr;
private int elements;
MyNewArray() {
arr = new long[50];
}
MyNewArray(int size) {
arr = new long[size];
}
/**
* 插入值
*
* @param value
*/
public void insert(long value) {
int i;
for (i = 0; i < elements; i++) {
if (arr[i] > value) {
break;
}
}
for (int j = elements; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = value;
elements++;
}
/**
* 输出数组
*/
public void display() {
System.out.print(" [ ");
for (int i = 0; i < elements; i++) {
System.out.print(arr[i] + " ");
}
System.out.print(" ] ");
System.out.println();
}
/**
* 根据值查找下标
* @param vlaue
* @return
*/
public int sreah(long vlaue) {
int i;
for (i = 0; i < elements; i++) {
if (vlaue == arr[i]) {
break;
}
}
if (i == elements) {
return -1;
} else {
return i;
}
}
/**
* 二分法查找
* @param value
* @return
*/
public int binarySearch(long value) {
int low = 0;
int middle = 0;
int pow = elements;
while (true) {
middle = (low + pow) / 2;
if (arr[middle] == value) {
return middle;
}else if (low > pow) {
return -1;
}else {
if (arr[middle] > value) {
pow = middle-1;
}else {
low = middle+1;
}
}
}
}
/**
* 根据下标获取值
* @param index
* @return
*/
public long get(int index) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
return arr[index];
}
}
/**
* 删除元素
* @param index
*/
public void delete(int index) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
for (int i = index; i < elements; i++) {
arr[i] = arr[i + 1];
}
elements--;
}
}
}
测试类
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
/*MyArray array = new MyArray();
array.insert(12);
array.insert(30);
array.insert(62);
array.display();
System.out.println("array = " + array.sreah(12));
System.out.println("array = " + array.get(2));
array.delete(1);
array.display();*/
MyNewArray array = new MyNewArray();
array.insert(16);
array.insert(1);
array.insert(10);
array.insert(19);
array.display();
System.out.println( array.binarySearch(19));
}
}
结果:

这个博客展示了如何使用Java创建一个名为`MyNewArray`的类,该类实现了动态数组,包括插入元素、显示数组、按值查找下标、二分查找以及删除元素的方法。在测试类中,创建了一个`MyNewArray`实例并进行了插入、显示和查找操作,最后执行了二分查找来定位值19的索引。
882

被折叠的 条评论
为什么被折叠?



