您的位置:首页 > 理论基础 > 数据结构算法

数据结构1:数组专题

2017-07-29 22:38 323 查看
本文主要是针对数据结构中最基本的数组的增删改查工具类。

基本数组的增删改查工具类:

package ch01;

public class MyArray {
private long[] arr;
//表示有效数据的长度
private int elements;

public MyArray() {
arr = new long[50];
}

public MyArray(int maxsize) {
arr = new long[maxsize];
}

/**
* 添加数据
*/
public void insert(long 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.println("]");
}

/**
* 查找数据
*/
public int search(long value) {
int i;
for(i = 0; i < elements; i++) {
if(value == arr[i]) {
break;
}
}

if(i == elements) {
return -1;
} else {
return i;
}

}

/**
* 查找数据,根据索引来查
*/
public long 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;
}
}
}


排序数组的增删改查,由于已经排好序了,所以可以通过二分查找方法查找指定的元素值所在数组的位置:

package ch01;

public class MyOrderArray {
private long[] arr;
//表示有效数据的长度
private int elements;

public MyOrderArray() {
arr = new long[50];
}

public MyOrderArray(int maxsize) {
arr = new long[maxsize];
}

/**
* 添加数据
*/
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.println("]");
}

/**
* 查找数据
*/
public int search(long value) {
int i;
for(i = 0; i < elements; i++) {
if(value == arr[i]) {
break;
}
}

if(i == elements) {
return -1;
} else
4000
{
return i;
}

}

/**
* 二分法查找数据
*/
public int binarySearch(long 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 long 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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息