(八)簡單排序-對象的插入排序(person)

對象的插入排序(對person類型對象進行插入排序)


person.java(對象類)


package JavaApp_ObjectSort;

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 dispalyPerson(){
	  System.out.print(" Last Name"+lastName);
	  System.out.print(",First Name"+firstName);
	  System.out.println(",Age"+age);
  }
  public String getLat(){
	  return lastName;
  }
  public int getAge(){
	  return age;
  }
}


ArrayInOb.java(對象數組類)



package JavaApp_ObjectSort;

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

	public ArrayInOb(int max) {// 構造函數
		a = new Person[max];
		nElems = 0;
	}

	public void insert(String last, String first, int age) {
		a[nElems] = new Person(last, first, age);
		nElems++;
	}

	public void display() {
		for (int j = 0; j < nElems; j++)
			a[j].dispalyPerson();
		System.out.println();
	}

	public void insertionSort() {//插入排序按照姓排序
		int in, out;
		for (out = 1; out < nElems; out++) {
			Person temp = a[out];
			in = out;
			while (in > 0 && a[in - 1].getLat().compareTo(temp.getLat()) > 0) {
				a[in] = a[in - 1];
				in--;
			}
			a[in] = temp;
		}
	}
	public void insertionSortAge() {//插入排序按照年齡排序
		int in, out;
		for (out = 1; out < nElems; out++) {
			Person temp = a[out];
			in = out;
			while (in > 0 && a[in - 1].getAge()>temp.getAge()) {
				a[in] = a[in - 1];
				in--;
			}
			a[in] = temp;
		}
	}
}



ObjectSortApp.java(測試類)


package JavaApp_ObjectSort;

public class ObjectSortApp {

	public static void main(String[] args) {
        int maxSize=100;
        ArrayInOb arr;
        arr=new ArrayInOb(maxSize);
        arr.insert("Evans", "patty", 24);
        arr.insert("Smith", "doc", 59);
        arr.insert("Smith", "lo", 37);
        arr.insert("Smith", "pu", 43);
        arr.insert("yee", "tom", 29);
        arr.insert("ff", "sato", 72);
        arr.insert("cer", "henry", 22);
        arr.insert("vans", "minh", 18);
        arr.insert("Evans", "luc", 2);
        System.out.println("按姓排序前");
        arr.display();
        
        
        arr.insertionSort();//按姓排序
        System.out.println("按姓排序後");
        arr.display();
        
        System.out.println("按年齡排序後");
        arr.insertionSortAge();//按年齡排序
        arr.display();
	}

}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章