Java对象插入排序算法

之前的一篇是基本数据类型的插入排序!这篇是对象类型插入排序!

代码如下:

class People
{
    private String country;
    private String name;
    private int age;

    public People(String country,String name,int age){
     this.country = country;
     this.name = name;
     this.age = age;    
    }

    public void display(){
      System.out.print("Country is: " + country);
      System.out.print(" Name is: " + name);
      System.out.println(" Age is: " + age);
    
    }


    public String getName(){
    
    return name;
    
    }

}

class ArrayInsertObject
{
    private People[] a;
    private int nElems;


    public ArrayInsertObject(int maxSize){
    a = new People[maxSize];
    nElems = 0;
    
    }

    public People find(String searchName){
     int j ;
     for(j = 0;j < nElems;j++){
       if(a[j].getName().equals(searchName)){
          break;       
       }
    
     }
     if(j == nElems){
       return null;
     }else{
       return a[j];
     }
    
    }
    public void insert(String country,String name,int age){
    a[nElems] = new People(country,name,age);
    nElems++;
    }

    public boolean delete(String name){
    int j ;
    for(j = 0;j < nElems;j++){
      if(a[j].getName().equals(name)){
        break;
      }
    }
     if(j == nElems){
      return false;
     }else{
       for(int k = j;k < nElems;k++)
           a[k] = a[k + 1];
         nElems--;
         return true;
    
     }

    }
    public void displayPeople(){

    for(int j = 0;j < nElems;j++)

      a[j].display();

     }
     
     public void insertSort(){
     int in ,out;
     for(out = 1;out < nElems;out++){
        People temp = a[out];
        
        in = out;

        while(in > 0&&a[in - 1].getName().compareTo(temp.getName()) > 0){
          a[in] = a[in - 1];
          --in;
        }
         a[in] = temp;
     }
    
     }



}

public class ObjectSortApp
{
    public static void main(String[] args){
      int maxSize = 100;
      ArrayInsertObject arr;
       arr = new ArrayInsertObject(maxSize);

       arr.insert("China","李斯",39);
       arr.insert("America","James",29);
       arr.insert("England","David",40);
       arr.insert("France","Simth",30);
       arr.insert("Germany","Tony",32);
       arr.insert("Spanish","Jose",72);
       arr.insert("Russia","Well",49);
       arr.insert("Japan","Mfff",63);
       System.out.println("排序前:");
       arr.displayPeople();

       arr.insertSort();
       System.out.println("排序后:");
       arr.displayPeople();

       


       String name = "Wells";
       People found ;
       found = arr.find(name);

       if(found != null){
         System.out.print("Found ");
         found.display();
       }else{
         System.out.println("Can't find " + name);
       }
       System.out.println("删除下面的两个人");
        arr.delete("Mfff");
        arr.delete("Jose");
        arr.displayPeople();
        


    }
}

运行结果如图所示:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值