我想知道可以打印出这种类型的每一步。这是我的代码: 正如你所看到的,我传入一个链表,我复制到数组的值可能使我的排序生活更容易,然后将排序的数组写入一个单独的文本文件。
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;
}
}
答案 0 :(得分:0)
好吧,对于疲惫的眼睛......这样的事情会有所帮助吗?
for (int i = 1; i < size; i++)
for (int j = i; j > 0; j--)
{
final int cmp = insArray[j-1].compareToIgnoreCase(insArray[j]);
System.out.format("Comparing %s at %d to %s at %d, result %d\n",
insArray[j-1], j-1, insArray[j], j, cmp);
if (cmp > 0) replace(insArray, j, j-1);
}