Java 打印排序的步骤
我想知道有没有可能把每一个步骤都打印出来。这是我的密码: 如您所见,我传入了一个链表,将的值复制到一个数组中,以尽可能简化排序过程,然后将排序后的数组写入一个单独的文本文件Java 打印排序的步骤,java,sorting,Java,Sorting,我想知道有没有可能把每一个步骤都打印出来。这是我的密码: 如您所见,我传入了一个链表,将的值复制到一个数组中,以尽可能简化排序过程,然后将排序后的数组写入一个单独的文本文件 import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Insertion { public void Sort (LinkedL
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;
}
}
好吧,为了疲惫的眼睛。。。像这样的东西有用吗
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);
}
我试图提出一个假设,来解释您编写这段代码的事实,以及代码已经清楚地显示了如何记录算法的每个步骤的事实。你能帮我吗?在int i=1中有另一个循环;i<尺寸;i++打印出阵列的所有元素对我来说,问题并不完全清楚。您的意思是在每个排序步骤后打印insArray的状态吗?比如在调用replace之前添加代码将insArray的内容写入文件或标准输出?@Marko Topolnik我在这里看不到什么?!是的,我在朋友的帮助下写了代码。而且工作12小时后发现所有东西并不容易straight@Amit谢谢你