Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

how to merge two new arrays

$
0
0
"Add a merge() method so that you can merge two ordered source arrays into an ordered destination array. Write code in main() that inserts some random numbers into the two source arrays, invokes merge(), and displays the contents of the resulting destination array."

My code only displays 7 arrays (merged). Even though i input 5 items in the first array and 3 items in the second. How do i correct this? Here's my code:


class OrdArray
    {
    private long[] a; // ref to array a
    private int nElems; // number of data items
//-----------------------------------------------------------
    public OrdArray(int max) // constructor
        {
        a = new long[max]; // create array
        nElems = 0;
        }
//-----------------------------------------------------------
public int size()
    { return nElems; }
//-----------------------------------------------------------
public int find(long searchKey)
    {
    int lowerBound = 0;
    int upperBound = nElems-1;
    int curIn;
    
    while(true)
        {
        curIn = (lowerBound + upperBound ) / 2;
        if(a[curIn]==searchKey)
            return curIn; // found it
        else if(lowerBound > upperBound)
            return nElems; // can’t find it
        else // divide range
            {
            if(a[curIn] < searchKey)
                lowerBound = curIn + 1; // it’s in upper half
            else
                upperBound = curIn - 1; // it’s in lower half
            } // end else divide range
        } // end while
    } // end find()
//-----------------------------------------------------------
public void insert(long value) // put element into array
    {
    int j;
    for(j=0; j<nElems; j++) // find where it goes
        if(a[j] > value) // (linear search)
            break;
    for(int k=nElems; k>j; k--) // move bigger ones up
        a[k] = a[k-1];
    a[j] = value; // insert it
    nElems++; // increment size
    } // end insert()
//-----------------------------------------------------------
public boolean delete(long value)
    {
    int j = find(value);
    if(j==nElems) // can’t find it
        return false;
    else // found it
        {
        for(int k=j; k<nElems; k++) // move bigger ones down
            a[k] = a[k+1];
        nElems--; // decrement size
        return true;
        }
    } // end delete()
//-----------------------------------------------------------
public void display() // displays array contents
    {
    for(int j=0; j<nElems; j++) // for each element,
        System.out.print(a[j] + " "); // display it
    System.out.println("");
    }
//-----------------------------------------------------------
public static void merge( int[] first, int firstsize,
                            int[] second, int secsize,
                            int[] third )
    {
    int j=0, k=0, l=0;

    while(j < firstsize && k < secsize) // neither array empty
        if( first[j] < second[k] )
           third[l++] = first[j++];
        else
            third[l++] = second[k++];

    while(j < firstsize) // arrayB is empty,
        third[l++] = first[j++]; // but first isn’t

    while(k < secsize) // first is empty,
        third[l++] = second[k++]; // but second isn’t
    
    System.out.println("\nNew Array (Merged)");
    } // end merge()
//-----------------------------------------------------------
void display2(int[] a, int size) {
        
    for(int j=0; j<nElems; j++) // for each element,
        System.out.print(a[j] + " "); // display it
    System.out.println("");
    }
//-----------------------------------------------------------
} // end class OrdArray




and


class OrderedApp
    {
    public static void main(String[] args)
        {
        int maxSize = 100; // array size
        OrdArray arr; // reference to array

        arr = new OrdArray(maxSize); // create the array
        arr.insert(77); // insert 10 
        arr.insert(99);
        arr.insert(44);
        arr.insert(55);
        arr.insert(22);
        arr.insert(88);
        arr.insert(11);
        arr.insert(00);
        arr.insert(66);
        arr.insert(33);
        
        System.out.println("Original Array");
        int searchKey = 55; // search for item
        if( arr.find(searchKey) != arr.size() )
            System.out.println("Found " + searchKey);
        else
            System.out.println("Can’t find " + searchKey);

        arr.display(); // display items

        arr.delete(00); // delete 3 items
        arr.delete(55);
        arr.delete(99);

        arr.display(); // display items again
   
        int[] arrayA = {77, 44, 22, 88, 98};
        int[] arrayB = {7, 14, 39};
        int[] arrayC = new int[arrayA.length + arrayB.length];
        
        arr.merge(arrayA, 5, arrayB, 3, arrayC);
        arr.display2(arrayC, 8);

        } // end main()
    } // end class OrderedApp



Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>