/*
* 超级数组
*/
public class SuperArray {
// 搞一个能存放data的数组
private int[] elements;
// 维护当前存储的位置
private int currentIndex = -1;
// 使用构造器初始化
public SuperArray() {
this(10);
}
public SuperArray(int capacity) { // capacity:容量
elements = new int[capacity];
}
// 对数据的增删改查
// 增加一个元素,尾插
public void add(int data) {
// 游标向前走
currentIndex++;
if (currentIndex > elements.length - 1) {
// 扩容
int[] temp = new int[elements.length * 2];
for (int i = 0; i < elements.length; i++) {
temp[i] = elements[i];
}
elements = temp;
}
elements[currentIndex] = data;
}
// 删除一个元素
public void delete(int index) {
if (index < 0 || index > elements.length - 1) {
System.out.println("您删除的[" + index + "]下标不在范围内");
} else {
for (int i = index + 1; i < elements.length; i++) {
elements[i - 1] = elements[i];
}
currentIndex--;
}
}
// 修改一个元素
public void set(int index, int data) {
if (index < 0 || index > elements.length - 1) {
System.out.println("您修改的[" + index + "]下标不在范围内");
} else {
elements[index] = data;
}
}
// 查询一个元素
// 使用 Integer 比使用 int 多一个 NULL
public Integer select(int index) {
if (index < 0 || index > elements.length - 1) {
System.out.println("您查找的[" + index + "]下标不在范围内");
return null;
} else {
return elements[index];
}
}
// 获取长度
public int size() {
return currentIndex + 1;
}
// 把我的数组变成字符串
public String arrayToString() {
String result = "[";
for (int i = 0; i < currentIndex; i++) {
result += elements[i] + ",";
}
return result.substring(0, result.length() - 1) + "]";
}
// 冒泡
public void sort() {
for (int i = 0; i < currentIndex; i++) {
for (int j = 0; j < currentIndex - 1; j++) {
int temp = elements[j];
elements[j] = elements[j + 1];
elements[j + 1] = temp;
}
}
}
}
优化
package array;
/*
* 超级数组
*/
public class SuperArray {
// 搞一个能存放data的数组
private int[] elements;
// 维护当前存储的位置
private int currentIndex = -1;
// 使用构造器初始化
public SuperArray() {
this(10);
}
public SuperArray(int capacity) { // capacity:容量
elements = new int[capacity];
}
// 增加一个元素,头插
public void addToHeader(int data) {
this.add(0, data);
}
// 增加一个元素,尾插
public void addToTail(int data) {
this.add(currentIndex + 1, data);
}
// 对数据的增删改查
// 增加一个元素,尾插
public void add1(int data) {
// 游标向前走
currentIndex++;
if (currentIndex > elements.length - 1) {
// 扩容
int[] temp = new int[elements.length * 2];
for (int i = 0; i < elements.length; i++) {
temp[i] = elements[i];
}
elements = temp;
}
elements[currentIndex] = data;
}
public void add(int index, int data) {
// 游标向前走
currentIndex++;
if (currentIndex > elements.length - 2) {
// 扩容
int[] temp = new int[elements.length * 2];
for (int i = 0; i < elements.length; i++) {
temp[i] = elements[i];
}
elements = temp;
}
// 移动位置,腾出空间
for (int i = currentIndex; i >= index; i--) {
elements[i + 1] = elements[i];
}
elements[index] = data;
}
// 删除一个元素
public void delete(int index) {
if (index < 0 || index > elements.length - 1) {
System.out.println("您删除的[" + index + "]下标不在范围内");
} else {
for (int i = index + 1; i < elements.length; i++) {
elements[i - 1] = elements[i];
}
currentIndex--;
}
}
// 修改一个元素
public void set(int index, int data) {
if (index < 0 || index > elements.length - 1) {
System.out.println("您修改的[" + index + "]下标不在范围内");
} else {
elements[index] = data;
}
}
// 查询一个元素
// 使用 Integer 比使用 int 多一个 NULL
public Integer select(int index) {
if (index < 0 || index > elements.length - 1) {
System.out.println("您查找的[" + index + "]下标不在范围内");
return null;
} else {
return elements[index];
}
}
// 获取长度
public int size() {
return currentIndex + 1;
}
// 把我的数组变成字符串
public String arrayToString() {
String result = "[";
for (int i = 0; i <= currentIndex; i++) {
result += elements[i] + ",";
}
return result.substring(0, result.length() - 1) + "]";
}
// 冒泡
public void sort() {
for (int i = 0; i < currentIndex; i++) {
for (int j = 0; j < currentIndex - 1; j++) {
int temp = elements[j];
elements[j] = elements[j + 1];
elements[j + 1] = temp;
}
}
}
}