Add a method insertionSort to the class ArraySorter, that performs an insertion
ID: 3809109 • Letter: A
Question
Add a method insertionSort to the class ArraySorter, that performs an
insertion sort of an array. The algorithm is described in detail on wikipedia.
for (index = 1; index < a.length; index++)
insert value at index into the the appropriate place
in the sorted subsection of the array,
increasing the length of the sorted subsection by 1
Please add a method insertionSort to the class ArraySort and follow the algorium above. I will give the ArraySort below. Also please use IDE to finish this question. In the result, it should show 2 arrays with numbers, one is for before sorting, one is for after sorting.
here is the ArraySorter class
public class ArraySorter
{
/**
Precondition: Every element in anArray has a value.
Action: Sorts the array into ascending order.
*/
public static void selectionSort(int[] anArray)
{
for (int index = 0; index < anArray.length - 1; index++)
{ // Place the correct value in anArray[index]
int indexOfNextSmallest = getIndexOfSmallest(index, anArray);
interchange(index, indexOfNextSmallest, anArray);
//Assertion:anArray[0] <= anArray[1]< =...<= anArray[index]
//and these are the smallest of the original array elements.
//The remaining positions contain the rest of the original
//array elements.
}
}
/**
Returns the index of the smallest value in the portion of the
array that begins at the element whose index is startIndex and
ends at the last element.
*/
private static int getIndexOfSmallest(int startIndex, int[] a)
{
int min = a[startIndex];
int indexOfMin = startIndex;
for (int index = startIndex + 1; index < a.length; index++)
{
if (a[index] < min)
{
min = a[index];
indexOfMin = index;
//min is smallest of a[startIndex] through a[index]
}
}
return indexOfMin;
}
/**
Precondition: i and j are valid indices for the array a.
Postcondition: Values of a[i] and a[j] have been interchanged.
*/
private static void interchange(int i, int j, int[] a)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp; //original value of a[i]
}
}
Explanation / Answer
public class MyInsertionSort { public static void main(String[] args) { int[] input = { 4, 2, 9, 6, 23, 12, 34, 0, 1 }; insertionSort(input); } private static void printNumbers(int[] input) { for (int i = 0; i key ) ) { array [i+1] = array [i]; i--; } array[i+1] = key; printNumbers(array); } } }Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.