数据结构--使用数组存储对象、使用O表示法

一、使用大O表示法

线性查找(从头到尾一个一个查找)
O(N)
效率还可以

二分查找(折半查找)得排序
O(log N)
效率良好

无序数组的插入
O(1)(使用常数表示的一般都不错)
效率优秀

有序数组的插入
O(N)
效率还可以

无序数组的删除
O(N) 
效率还可以

有序数组的删除
O(N)
效率还可以

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

二、使用数组存储对象

写一个Person类如下:

public class Person {

	private String lastname;
	private String firstname;
	private int age;
	public Person(String lastname,String firstname,int age){
		this.lastname=lastname;
		this.firstname=firstname;
		this.age=age;
	}
	
	public void display()
	{
		System.out.print("lastname:"+lastname);
		System.out.print("firstname:"+firstname);
		System.out.println("age:"+age);
	}

	public String getLastname() {
		return lastname;
	}

	public String getFirstname() {
		return firstname;
	}

	public int getAge() {
		return age;
	}

	public void setLastname(String lastname) {
		this.lastname = lastname;
	}

	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
}

写一个ClassDataArray类,包含使用数组存储对象的查找删除显示的方法

public class ClassDataArray {

	private Person[] aPersons;
	int element;
	
	public ClassDataArray(int max) {
		// TODO Auto-generated constructor stub
		aPersons=new Person[max];
		element=0;
	}
	
	public Person find(String serachname){//按照姓查询
		int j;
		for(j=0;j<element;j++)
			if(aPersons[j].getLastname().equals(serachname))
				break;
		if(j==element)
			return null;//没有找到
		else 
			return aPersons[j];//找到该数据
	}
	
	public void insert(String lastname,String firstname,int age){
		aPersons[element]=new Person(lastname, firstname, age);
		element++;
	}
	public boolean delete(String searchkey){
		int j;
		for(j=0;j<element;j++)
			if(aPersons[j].getLastname().equals(searchkey))
				break;
		if(j==element)
			return false;//删除失败,没有找到该数据
		else{
			for(int k=j;k<element;k++)
				aPersons[k]=aPersons[k+1];
			element--;
			return true;
		}
	}
	
	public void display(){
		for(int j=0;j<element;j++)
			aPersons[j].display();
	}
	
		

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值