Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/forums/java/)
-   -   Java:Insertion Sort (http://www.go4expert.com/forums/javainsertion-sort-t14109/)

cyrow 22Sep2008 07:56

Java:Insertion Sort
 
Code:

import java.text.DecimalFormat;

public class Account{
        //class Variables
        private static int NumAccounts = 0;
        private static final double Interest = 0.05;
       
        //Instant Variables
        private  long accNum;
        private  double balance;
       
        DecimalFormat x = new DecimalFormat("$00,000.00");//Format Balance
       
        public Account(long accN, double bal){//Constructor
                accNum  = accN;
                balance = bal;
                NumAccounts++;
        }
       
        public int GetNumAccounts(){
                return NumAccounts;
        }
       
        public double getBalance(){
                return balance;
        }
       
        public long getAccountNum(){
                return accNum;
        }
       
        public void debit(double amount){
                if(balance >= amount){
                  balance -= amount;       
                }
        }
       
       
        public void credit(double amount){
                balance += amount;
        }
       
       
        public String toString(){
                String Str;
               
                Str ="Account Number  :" + accNum + "\n"+
                        "Account Balance  :" + x.format(balance) + "\n";
                return Str;
        }
}//End of class Account
public class TestAccountxx{
private static  final int Max = 1000;
static Account[]accList= new Account[Max];
static int u = 0;


public static int getAccount(int accNum){//using sequential search to find and return account if exist
  for(int j = 0; j < accList.length; j++){
      if(accList[j] != null) {
          if(accList[j].getAccountNum() == accNum)
              //return accList[j];
              return j;
      }
  }  // end for
  return -1;

}       

public static void insertIntoArray(Account p)
  {//Insert Objects into account
 
                accList[u] = p;
                u++;
  }               

  public static void deleteAccount(int accNum)//delete account from accList
  {
      int size = accList.length;         
         
      for(int i = accNum; i < size; i++){
                accList[i] = accList[i + 1];
                size--;
      }
  }


public static void transaction(int accNum, double amount,int transType)
  {
      if (transType == 1){
        accList[accNum].debit(amount);
      }
         
      if (transType == 2){
        accList[accNum].credit(amount);
      }   
  }
 

 public static void insertion_srt(){
        int lo, hi;
        lo = 0;
        hi = accList.length;
       
        for(int j = lo + 1; j <= hi; j++){
                Account hold = accList[j];

                int k = j - 1;
                while(k >= 0 && hold.getAccountNum().compareTo(accList[k].getAccountNum())< 0){
                accList[k+1] = accList[k];
                --k;       
                }//End While
                accList[k + 1] = hold;
        }//End For
 }//End Insertion Sort
       
       
       
       
       





        public static void main(String[] args){
         
        Account        a = new Account(123456,5255.17);
        insertIntoArray(a);
        insertion_srt();
                 
        Account        b = new Account(188468,19218.20);
        insertion_srt();
        insertIntoArray(b);
       
        Account        c = new Account(217794,1002.62);
        insertIntoArray(c);
       
        Account        d = new Account(998283,20203.75);
        insertIntoArray(d);
               
       


 //Create Transactions
                int x = getAccount(123456);
                transaction(x,1255.17,1);
               
       
                int y = getAccount(188468);
                transaction(y,2781.80,2);
               
               
                int z = getAccount(217794);
        transaction(z,2000.00,1);
       
       
        int n = getAccount(998283);
        transaction(n,125.00,1);
       
        int w = getAccount(998283);
        deleteAccount(w);
       
        int p = getAccount(123457);
        if(p ==-1){
                System.out.println("Account 123457 does not exist");
        }else{
                deleteAccount(p);
        }
       
     
       
        for(int i = 0; i < 3; i++){
                System.out.println(accList[i].toString());
        }
        }//end main
}//end class TestAccount

What I am attempting to do is as i create the accounts and insert them into the array, I want to keep them in order using an Insertion Sort. I am not able to get it to work. Please help.

oogabooga 22Sep2008 22:03

Re: Java:Insertion Sort
 
Your insertion sort should be more like this:
Code:

public static void insertion_sort()
{
  for( int j = 1; j < accList.length; ++j )
  {
    for( int k = j - 1;
        k >= 0 && accList[j].getAccountNum() < accList[k].getAccountNum();
        --k )
    {
      accList[k+1] = accList[k];
    }
    accList[k + 1] = accList[j];
  }
}

And your deleteAccount function should be more like this:
Code:

public static void deleteAccount( int acc_index )
{
  for( int i = acc_index; i < accList.length - 1; ++i )
  {
    accList[i] = accList[i + 1];
  }
  // Now you must reduce the length of the accList array by one,
  // i.e., the last element must be deleted from the array object.
  // I do not know how that is done in Java.
  // So you need to do what the following line says,
  // but in the Java idiom.
  delete( accList[accList.length - 1] );
}



All times are GMT +5.5. The time now is 09:19.