我想知道是否可以打印出每一步。这是我的代码:如您所见,我传入一个链表,将 i 的值复制到一个数组中,以可能使我的排序工作更轻松,然后将排序后的数组写入一个单独的文本文件。
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;
}
}