I was given the following code to use to start my project, the project is to first create an array of random integers from 0-1000 and then sort them from least to greatest.
I have created the array of random integers but I am not sure how to implement the bubble sort class that was included.
here is the code I have written so far
This was the code I was given to work with
bubble sorting class
SortableArrayList Class
I have created the array of random integers but I am not sure how to implement the bubble sort class that was included.
here is the code I have written so far
class bubbleDriver
{
public static void main(String args[])
{
int capacity = Integer.parseInt(args[0]);
SortableArrayList<Integer> integerList = new bubbleSorting<Integer>(capacity);
int j = 10;
int myarray[] = new int [j];
for (int i = 0 ; i < j ; i++)
{
myarray [i] = (int) (Math.random () * 1000);
System.out.println(myarray[i]);
}
System.out.println("Array length is " + myarray.length);
// Sort and print in numerical order
integerList.sort();
System.out.println("Contents of NumberList sorted : " );
} // main
}
This was the code I was given to work with
bubble sorting class
class bubbleSorting<T extends Comparable<T>>
extends SortableArrayList<T>
{
public bubbleSorting(int capacity)
{
super(capacity);
}
// Sorts the sublist from lowIndex to highIndex using Bubble Sort
// Uses recursion to sort smaller sublists
protected void sortSublist(int lowIndex, int highIndex)
{
if(lowIndex < highIndex)
{
// The sublist has more than one element, so sort it
/* "Bubble" largest value in listItem[lowIndex]...listItem[i]
to position i by swapping adjacent items that are out of order
*/
for (int i = lowIndex; i < highIndex; i++)
{
if (listItem[i].compareTo(listItem[i+1]) > 0)
{
// swap items
T temp = listItem[i];
listItem[i] = listItem[i+1];
listItem[i+1] = temp;
}
} //for loop
// Use bubble sort to sort the rest of the list
sortSublist(lowIndex,highIndex-1);
} //if statement
}
}
SortableArrayList Class
abstract class SortableArrayList<T extends Comparable<T>>
{
protected T[] listItem;
protected int itemCount;
private static int DEFAULT_CAPACITY = 50;
private boolean isSorted;
// Constructs a list with the specified capacity
public SortableArrayList(int capacity)
{
@SuppressWarnings("unchecked")
T[] tempList = (T[]) new Comparable[DEFAULT_CAPACITY];
listItem = tempList;
itemCount = 0;
isSorted = false;
}
// Constructs a list with the default capacity
public SortableArrayList()
{
this(DEFAULT_CAPACITY);
}
/* Adds item to end of list
pre-contition: itemCount < listItem.length() - 1
post-contition: itemCount == itemCount@pre + 1
item added to end of list
*/
public void append(T newItem)
{
listItem[itemCount] = newItem;
itemCount++;
isSorted = false; //List may no longer be sorted
}
/* Return item in given position
If position is out of range, return null
*/
public T getItem(int position)
{
if (0 <= position && position < itemCount)
return listItem[position];//position
else
return null;
}
// Return length of list
public int getLength()
{
return itemCount;
}
// Sort list
public void sort()
{
sortSublist(0,itemCount-1);
}
// Sort sublist from lowIndex to highIndex
abstract protected void sortSublist(int lowIndex, int highIndex); // method does not get implemented in class
// only used in this class, or a subclass
/*
Returns the position of the item with the given value.
If the item is not in the list, returns -1.
*/
public int search(T searchValue)
{
if (isSorted)
{
return binarySearch(searchValue,0,itemCount-1);
}
else
{
return linearSearch(searchValue);
}
}
/*
Searches for the index of the given value using the binary search algorithm
*/
private int binarySearch(T searchValue, int lowIndex, int highIndex)
{
if (highIndex < lowIndex)
{
return -1; // not in list
}
else
{
int midIndex = lowIndex + (highIndex-lowIndex)/2;
if (listItem[midIndex].equals(searchValue))
{
return midIndex; //found it -- position is one more than index
}
else if (listItem[midIndex].compareTo(searchValue) > 0)
{
// searchValue comes before midIndex in array
return binarySearch(searchValue,lowIndex,midIndex-1);
}
else
{
// listItem[midIndex] comes after midIndex in array
return binarySearch(searchValue,midIndex+1,highIndex);
}
}
}
// Searches for the index of the given value using linear search
private int linearSearch(T searchValue)
{
int index = itemCount-1;
while (index >= 0 && !listItem[index].equals(searchValue))
{
index--;
}
return index;
}
// Returns a string of the items in the list --
public String toString()
{
StringBuilder returnStringBuilder = new StringBuilder();
for (int i = 0; i < itemCount; i++)
{
returnStringBuilder.append(listItem[i].toString() + "\n");
}
return returnStringBuilder.toString();
}
}