0

我想知道是否可以打印出每一步。这是我的代码:如您所见,我传入一个链表,将 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;
    }
}
4

1 回答 1

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);
        }
于 2012-04-19T10:06:43.337 回答