Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Implement a binary search of an array iteratively using the method public static

Implement a binary search of an array iteratively using the method

public static > boolean inArrayIterativeSorted(T[] anArray, T anEntry)

Consider an array data of n numerical values in sorted order and a list of numerical target values (target values are not necessarily sorted). Your goal is to compute the smallest range of array indices that contains all of the target values. If a target value is smaller than data[0], the range should start with -1. If a target value is larger than data[n - 1], the range should end with n.

For example, given the array [ 5 8 10 13 15 20 22 26] and the target values (8, 2, 9, 17), the range is -1 to 5.

Devise an efficient algorithm that solves this problem and implement it in

public static >

Interval findInterval(T[] sortedData, List targetValues)

where Interval is a class that provides two public methods getLower() and getUpper() to return the lower and upper values of an Interval object. Implement the Interval class.

If you have n data values in the array and m target values in the list, what is the Big Oh performance of your algorithm?

Write the java code for the method

pubic static > boolean isSorted(T[ ] a)

which returns true if the array a is in sorted in ascending order. The code must run in O(n) time.

Consider a revised selection sort algorithm so that on each pass it finds both the largest and smallest values in the unsorted portion of the array. The sort then moves each of these values into its correct location by swapping array entries.

Implement the modified selection sort using the method

public static > void modifiedSelectionSort(T[] a, int n)

How many comparisons are necessary to sort n values?

-------------------------------------------------------------------------------------------------------------------------------------------------------- ArraySearcher.java

Page of 2

ZOOM

/**

A class of static methods for searching an array of Comparable objects.

@author Frank M. Carrano

@author Timothy M. Henry

@version 4.0

*/

public class ArraySearcher

{

// Segment 18.3

/** Searches an unsorted array for anEntry. */

public static boolean inArrayIterativeUnsorted(T[] anArray, T

anEntry)

{

boolean found = false;

int index = 0;

while (!found && (index < anArray.length))

{

if (anEntry.equals(anArray[index]))

found = true;

index++;

} // end while

return found;

} // end inArrayIterativeUnsorted

//

==========================================================================

==============

// Segment 18.6

/** Searches an unsorted array for anEntry. */

public static boolean inArrayRecursiveUnsorted(T[] anArray, T

anEntry)

{

return search(anArray, 0, anArray.length - 1, anEntry);

} // end inArrayRecursiveUnsorted

// Searches anArray[first] through anArray[last] for desiredItem.

// first >= 0 and < anArray.length.

// last >= 0 and < anArray.length.

private static boolean search(T[] anArray, int first, int last, T

desiredItem)

{

boolean found = false;

if (first > last)

found = false; // No elements to search

else if (desiredItem.equals(anArray[first]))

found = true;

else

found = search(anArray, first + 1, last, desiredItem);

return found;

} // end search

//

==========================================================================

==============

/** Searches a sorted array for anEntry. */

public static > boolean

inArrayRecursiveSorted(T[] anArray, T anEntry)

{

return binarySearch(anArray, 0, anArray.length - 1, anEntry);

} // end inArrayRecursiveSorted

// Segment 18.13

// Searches anArray[first] through anArray[last] for desiredItem.

// first >= 0 and < anArray.length.

// last >= 0 and < anArray.length.

private static >

boolean binarySearch(T[] anArray, int first, int last, T

desiredItem)

{

boolean found;

int mid = first + (last - first) / 2;

if (first > last)

found = false;

else if (desiredItem.equals(anArray[mid]))

found = true;

else if (desiredItem.compareTo(anArray[mid]) < 0)

found = binarySearch(anArray, first, mid - 1, desiredItem);

else

found = binarySearch(anArray, mid + 1, last, desiredItem);

return found;

} // end binarySearch

//

==========================================================================

==============

public static void display(T[] anArray)

{

System.out.print("The array contains the following entries: ");

for (int index = 0; index < anArray.length; index++)

{

System.out.print(anArray[index] + " ");

} // end for

System.out.println();

} // end display

} // end ArraySearcher --------------------------------------------------------------------------------------------------------------------------------------------------------

SortArray.java

import java.util.* ;

public class SortArray

{

public static > void selectionSort(T[]

a, int n) {

for (int index = 0; index < n - 1; index++)

{

int indexOfSmallest = indexOfSmallest(a, index, n - 1);

T temp = a[index];

a[index] = a[indexOfSmallest];

a[indexOfSmallest] = temp;

//Invariant: a[0] <= a[1] <= . . . <= a[index] <= all

other a[i]

} // end for

} // end selectionSort

private static >

int indexOfSmallest(T[] a, int

first, int last) {

T min = a[first];

int indexOfMin = first;

for (int index = first + 1; index <= last; index++)

{

if (a[index].compareTo(min) < 0)

{

min = a[index];

indexOfMin = index;

}

}

return indexOfMin;

}

public static >

void insertionSort(T[] a, int n) {

for(int unsorted = 1; unsorted < n; ++unsorted) {

T item = a[unsorted];

int loc = unsorted;

while(loc > 0 && a[loc-1].compareTo(item) > 0) {

a[loc] = a[loc-1];

--loc;

}

a[loc] = item;

}

}

public static >

void bubbleSort(T[] a, int n) {

for(int pass = 1; pass < n ; ++pass) {

for(int index = 0; index < n-pass; ++index) {

int nextIndex = index + 1;

if(a[index].compareTo(a[nextIndex]) > 0) {

T temp = a[index];

a[index] = a[nextIndex];

a[nextIndex] = temp;

}

}

}

}

public static >

void bubbleSort2(T[] a, int n) {

boolean sorted = false;

for(int pass = 1; pass < n && !sorted ; ++pass) {

sorted = true;

for(int index = 0; index < n-pass; ++index) {

int nextIndex = index + 1;

if(a[index].compareTo(a[nextIndex]) > 0) {

T temp = a[index];

a[index] = a[nextIndex];

a[nextIndex] = temp;

sorted = false;

}

}

}

}

public static void main(String [] args) {

Integer [] a = { 15, 8 , 10 , 2, 5 };

//selectionSort(a, a.length);

//insertionSort(a, a.length);

//bubbleSort(a, a.length);

bubbleSort2(a, a.length);

System.out.println("a = " + Arrays.toString(a));

}

} // end SortArray

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions