数据结构与算法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)

算法由好到坏

相关文章
相关标签/搜索