- 数组MyArray
package cn.mydata;
public class MyArray {
private int[] arr;
//表示有效数据的长度
private int elements;
public MyArray() {
arr = new int[50];
}
public MyArray(int maxsize) {
arr = new int[maxsize];
}
/**
* 添加数据
*/
public void insert(int value) {
arr[elements] = value;
elements++;
}
/**
* 显示数据
*/
public void display() {
System.out.print("[");
for (int i = 0; i < elements; i++) {
System.out.print(arr[i] + " ");
}
System.out.print("]");
}
/**
* 查找数据
*/
public int search(int value) {
int i;
for (i = 0; i < elements; i++) {
if (value == arr[i]) {
break;
}
}
if (i == elements) {
return -1;
}else {
return i;
}
}
/**
* 查找数据,根据索引来查
*/
public int get(int index) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
}else {
return arr[index];
}
}
/**
* 删除数据
*/
public void delete(int index) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
}else {
for (int i = index; i < elements; i++) {
arr[index] = arr[index + 1];
}
elements--;
}
}
/**
* 更新数据
*/
public void change(int index,int newvalue) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
}else {
arr[index] = newvalue;
}
}
}
- 有序数组MyOrderArray
package cn.mydata;
public class MyOrderArray {
private int[] arr;
//表示有效数据的长度
private int elements;
public MyOrderArray() {
arr = new int[50];
}
public MyOrderArray(int maxsize) {
arr = new int[maxsize];
}
/**
* 添加数据
*/
public void insert(int 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("]");
}
/**
* 查找数据
*/
public int search(int value) {
int i;
for (i = 0; i < elements; i++) {
if (value == arr[i]) {
break;
}
}
if (i == elements) {
return -1;
}else {
return i;
}
}
/**
* 二分法查找数据
*/
public int binarySearch(int value) {
int middle = 0;
int low = 0;
int pow = elements;
while (true) {
middle = (pow + low) / 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;
}
}
}
}
/**
* 查找数据,根据索引来查
*/
public int get(int index) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
}else {
return arr[index];
}
}
/**
* 删除数据
*/
public void delete(int index) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
}else {
for (int i = index; i < elements; i++) {
arr[index] = arr[index + 1];
}
elements--;
}
}
/**
* 更新数据
*/
public void change(int index,int newvalue) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
}else {
arr[index] = newvalue;
}
}
}
3.测试类TestMyArray
package cn.mydata;
public class TestMyArray {
public static void main(String[] args) {
MyArray myArray = new MyArray();
myArray.insert(30);
myArray.insert(60);
myArray.insert(90);
myArray.display();
// System.out.println(myArray.search(90));
// System.out.println(myArray.get(3));
// myArray.delete(1);
// myArray.display();
myArray.change(0, 12);
myArray.display();
MyOrderArray myOrderArray = new MyOrderArray();
myOrderArray.insert(30);
myOrderArray.insert(10);
myOrderArray.insert(90);
myOrderArray.insert(60);
myOrderArray.display();
System.out.println(myOrderArray.binarySearch(30));
System.out.println(myOrderArray.binarySearch(90));
}
}