數據結構與算法6

 此程序中顯示了數據存儲結構能夠經過與簡單類型一樣的方法來處理類對象。java

注意的地方是:關鍵字是一個String類對象,所以作比較時須要使用equals()方法而不是==運算符。算法

 

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.println(" Last name: " + lastName);
		System.out.println(" fisrt name: " + firstName);
		System.out.println(" age " + age);
	}
	public String getLast()
	{
		return lastName;
	}
}
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 display()
	{
		for(int j=0;j<nElems;j++)
			a[j].displayPerson();
	}
	
}
class ClassDataApp{
	public static void main(String[] args)
	{
		int maxSize = 100;
		classDataArray arr;
		arr = new classDataArray(maxSize);
		arr.insert("e", "patty", 24);
		arr.insert("s", "lorr", 37);
		arr.insert("yee", "tom", 46);
		arr.insert("adams", "henry", 63);
		arr.insert("hashinte", "sate", 21);
		arr.insert("stimson", "henry", 29);
		arr.insert("velasquez", "jose",72);
		arr.insert("lamrque", "henry", 54);
		arr.insert("vang", "winth",22);
		arr.insert("creswekk", "lus", 18);
		arr.display();
		String searchkey = "e";
		Person found;
		found = arr.find(searchkey);
		if(found != null)
		{
			System.out.println("found");;
			found.displayPerson();
		}
		else
			System.out.println("no found" + searchkey);
		System.out.println("delete s,yee,adams");
		arr.delete("s");
		arr.delete("yee");
		arr.delete("adams");
		arr.display();
		
		
	}
}
Last name: e
 fisrt name: patty
 age 24
 Last name: s
 fisrt name: lorr
 age 37
 Last name: yee
 fisrt name: tom
 age 46
 Last name: adams
 fisrt name: henry
 age 63
 Last name: hashinte
 fisrt name: sate
 age 21
 Last name: stimson
 fisrt name: henry
 age 29
 Last name: velasquez
 fisrt name: jose
 age 72
 Last name: lamrque
 fisrt name: henry
 age 54
 Last name: vang
 fisrt name: winth
 age 22
 Last name: creswekk
 fisrt name: lus
 age 18
found
 Last name: e
 fisrt name: patty
 age 24
delete s,yee,adams
 Last name: e
 fisrt name: patty
 age 24
 Last name: hashinte
 fisrt name: sate
 age 21
 Last name: stimson
 fisrt name: henry
 age 29
 Last name: velasquez
 fisrt name: jose
 age 72
 Last name: lamrque
 fisrt name: henry
 age 54
 Last name: vang
 fisrt name: winth
 age 22
 Last name: creswekk
 fisrt name: lus
 age 18

java中的數組是對象,由new操做符創造數組

無序數組能夠快速插入,可是查找和刪除比較慢設計

將數組封裝到類中能夠保護數組不被隨意更改code

類的接口又類用戶可訪問的方法組成對象

類接口的設計使類用戶的操做更簡單blog

有序數組能夠用二分法接口

線性查找須要的時間與數據成正比get

二分法查找須要的時間與數據的對數成正比hash

大O表示法爲比較算法的速度提供了方便方法

O(1)>O(logN)>O(N)>O(N^2)

算法由好到壞

相關文章
相關標籤/搜索