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

(四)存储对象的数组和大O表示法

2017-03-30 11:27 447 查看

存储对象数组

person.java(对象类)

package JavaAppClassDataArray;

public class Person {
private String lastName;
private String firstName;
private int age;

public Person(String last, String first, int a) {
lastName = last;
firstName = first;
age = a;
}

public void displayPerson() {
System.out.print("Last name:" + lastName);
System.out.print(",First name:" + firstName);
System.out.println(",Age:" + age);

}

public String getLast() {
return lastName;
}
}


ClassDataArray.java(数组存储对象)

package JavaAppClassDataArray;

public class ClassDataArray {
private Person[] a;
private int nElems;

public ClassDataArray(int max) {
a = new Person[max];
nElems = 0;
}

public Person find(String searchName) {// 按姓查询
int j;
for (j = 0; j < nElems; j++)
if (a[j].getLast().equals(searchName))
break;
if (j == nElems)
return null;// 没有找到
else
return a[j];// 找到了
}
public void insert(String last,String first,int age){
a[nElems]=new Person(last, first, age);
nElems++;
}
public boolean delete(String searchName) {
int j;
for (j = 0; j < nElems; j++)
if (a[j].getLast().equals(searchName))
break;
if (j == nElems)
return false;// 没有找到
else {
for (int k = j; k < nElems; k++) {
a[k] = a[k + 1];
}
nElems--;
return true;
}
}
public void displayA(){
for(int j=0;j<nElems;j++){
a[j].displayPerson();
}
}
}




ClassDataApp(测试类)

package JavaAppClassDataArray;

public class ClassDataApp {

public static void main(String[] args) {
int maxSize=100;
ClassDataArray arr;
arr=new ClassDataArray(maxSize);
arr.insert("Stimson", "哈哈", 24);
arr.insert("Smith", "哈哈", 26);
arr.insert("qwer", "哈哈", 28);
arr.insert("喔额", "哈哈", 38);
arr.insert("维恩", "哈哈", 73);
arr.insert("我的", "哈哈", 89);
arr.insert("无法答复", "哈哈", 58);
arr.insert("SFF", "哈哈", 1);
arr.displayA();
String searchKey="Stimson";
Person found;
found=arr.find(searchKey);
if(found!=null){
System.out.print("Found ");
found.displayPerson();
}else
System.out.println("Can not find"+searchKey);
System.out.println("删除人");
arr.delete("Smith");
arr.displayA();
}

}


大O表示法

                                                    大O表示法

线性查找                        O(N)                  还可以
二分查找                        O(log N)             良好
无序数组插入                 O(1)                   优秀
有序数组插入                 O(N)                  还可以
无序数组删除                 O(N)                  还可以
有序数组删除                 O(N)                  还可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 java