一、概念
抽象数据类型(ADT):由一种数据模型和在该数据模型上的一组操作组成。
二、数组
无序数组
优点:插入快
缺点:查找慢,删除慢
public class Array {
private String[] strArray;
private int length=0; //数组元素个数
//构造函数
public Array(int max) {
strArray=new String [max];
}
//插入元素
public void insert(String cur){
strArray[length]=cur;
length++;
}
//查找元素
public int contains(String cur){
int index=-1;
for (int i=0;i<length;i++) {
if (strArray[i].equals(cur)){
index=i;
break;
}
}
return index;
}
//删除元素
public boolean delete(String cur){
int index=-1;
if((index=contains(cur))!=-1){
for(int i=index;i<length-1;i++){
strArray[i]=strArray[i+1];
}
length--;
return true;
}else {
return false;
}
//列出所有元素
}
public void view(){
for(int i=0;i<length;i++){
System.out.print(strArray[i]+"\t");
}
}
}
有序数组
优点:查找快
缺点:插入慢,删除慢
public class OrderArray {
private int [] intArray;
private int length= 0;
public OrderArray(int max){
intArray=new int[max];
}
//查找元素
public int find(int target){
int lower=0;
int upper=length-1;
int cur;
if(upper<0){
return -1;
}while (true){
cur=(lower+upper)/2;
if (target==intArray[cur]){
return cur;
}else if (cur==lower){
if(target!=intArray[upper]){
return -1;
}
}else {
if(intArray[cur]<target){
lower=cur;
}else {
upper=cur;
}
}
}
}
//插入元素
public void insert(int target){
int location=0;
for(;location<length;location++){
if (intArray[location]>target)
break;
}
for(int i=length;i>location;i--){
intArray[i]=intArray[i-1];
}
intArray[location]=target;
length++;
}
//删除元素
public boolean delete(int cur){
int index=-1;
if((index=find(cur))!=-1){
for(int i=index;i<length-1;i++){
intArray[i]=intArray[i+1];
}
length--;
return true;
}else {
return false;
}
}
//列出所有元素
public void view(){
for(int i=0;i<length;i++){
System.out.print(intArray[i]+"\t");
}
System.out.println();
}
}