i was wondering of it is possible to print out every step of the sort. Here is my code: as you can see, i pass in a linked list, the values of i copy to an array to possibly make my sorting life easier and then write the sorted array to a separate text file.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Insertion
{
public void Sort (LinkedList listIn, int size) throws Exception
{
String[] insArray = new String[size] ;
String textContent = null ;
File outputFile ;
//copy the list values in the array
for (int i = 0 ; i < size ; i++)
{
insArray [i] = listIn.get(i).printNode();
}
Stopwatch timer = new Stopwatch().start();
//Insertion Sort
for (int i = 1; i < size; i++)
for (int j = i; j > 0; j--)
{
if (insArray[j-1].compareToIgnoreCase(insArray[j]) > 0)
{
replace(insArray, j, j-1);
}
}
timer.stop();
do
{
outputFile = new File("[Insertion] Sorted Entries.txt") ;
if(!outputFile.exists())
{
outputFile.createNewFile ();
System.out.println("Sorted file created.txt");
System.out.println("");
}
else
{
System.out.println("File Updated.");
}
}while (!outputFile.exists()) ;
try
{
//the "true" argument sets the FileWriter to append mode so that is does not overwrite the first line
BufferedWriter out = new BufferedWriter(new FileWriter("[Insertion] Sorted Entries.txt", true));
for (int i = 0 ; i < size ; i++)
{
textContent = (insArray[i]) ;
out.write(textContent) ;
out.newLine() ;
}
out.close() ;
}catch(IOException e)
{
System.out.println("Could not write to file") ;
System.exit(0) ;
}
System.out.println("Time to execute: " + timer.getElapsedTime() + "ns");
}
private static void replace(Comparable[] array, int i, int j)
{
Comparable swap = array[i];
array[i] = array[j];
array[j] = swap;
}
}