Я работаю над проектом, который читает данные из файла, помещает данные в связанный узел, сортирует связанный узел с помощью пузырьковой сортировки и печатает в выходной файл. Каждый раз, когда своп / обмен / проход производится в пузырьковой сортировке, я должен считать его и распечатывать, сколько свопов / обменов / проходов потребовалось для сортировки любого заданного списка. Мой код, кажется, работает нормально, и он будет нормально печататься на моем экране, но в моем выходном файле вместо цифр я получаю странные символы, такие как «Ⴖ» ?? Заранее спасибо !!
package assignment1;
import java.io.PrintWriter;
public class Sorting {
private int comparisons;
private int exchanges;
private int totalC;
private int totalE;
private int totalP;
private long time;
private int pass;
private static PrintWriter printWriter;
private static int n; //size list
public Sorting(int size, PrintWriter pw) {
n = size;
printWriter = pw;
}
}
Метод, который сортирует мой список. (он успешно сортировался - никаких проблем нет. Однако обновление моей переменной или мои вызовы моего метода отображения должны быть неудачными. Предполагается, что после каждого «прохода» метода он печатает и сколько сравнений и обменов он сделал каждый пройти. Затем я должен напечатать общее количество всего в конце. Это часть, которая не работает. Когда я попытался напечатать переменные для каждой итерации, я получил очень длинную строку случайных символов и букв.
public void bubbleSort(LinkedNode head) {
LinkedNode previous;
LinkedNode current;
LinkedNode next;
comparisons = 0;
exchanges = 0;
time = 0;
pass = 0;
totalC = 0;
totalE = 0;
totalP = 0;
boolean isSorted = true;
//if list is empty or only 1 item is in list -> it is sorted
if (head == null || head.getNext() == null) {
return;
}
long start = System.currentTimeMillis(); //begin count for bubbleSort
while(isSorted) {
comparisons = 0;
exchanges = 0;
previous = null;
current = head;
next = head.getNext();
isSorted = false;
while(next != null) {
comparisons ++; //increment counter for each comparison made
if (current.getElement() > next.getElement()) {
if (head == current) {
head = next;
}
else {
previous.setNext(next);
}
current.setNext(next.getNext());
next.setNext(current);
isSorted = true;
current = next;
exchanges++;
}
previous = current;
current = previous.getNext();
next = current.getNext();
}
pass++; //increment counter for each run through
totalP += pass;
totalE += exchanges;
totalC += comparisons;
}
long elapsedTimeMillis = System.currentTimeMillis()-start;
time = elapsedTimeMillis;
}
Единственная часть, которая правильно выводит в мой файл, это переменная времени.На моем экране я получаю число проходов, равное 4239, но в моем выходном файле я получаю странный символ.
void bubbleSortDisplay(LinkedList myList, PrintWriter pw) {
System.out.printf("time pass cmp exch ");
printWriter.write("time pass cmp exch ");
printWriter.write("\n----------------------------\n");
System.out.printf("\n", time);
printWriter.write(time + "ms ");
System.out.print(time + "ms ");
printWriter.write(totalP);
System.out.print(totalP);
}