当我学习由Robert Sedgewick授权的算法书时,当我完成Selection.java
代码时,我发现没有输出,我几乎不知道为什么。
以下是我的代码。
import java.util.Comparator;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class Selection {
public static void sort(Comparable[] a) {
int n = a.length;
for (int i = 0; i < n; i++) {
int min = i;
for (int j = i + 1; j < n; j++)
if (less(a[j], a[min]))
min = j;
exch(a, i, min);
}
}
private static boolean less(Comparable v, Comparable w) {
return v.compareTo(w) < 0;
}
private static boolean less(Comparator comparator, Object v, Object w) {
return comparator.compare(v, w) < 0;
}
private static void exch(Object[] a, int i, int j) {
Object swap = a[i];
a[i] = a[j];
a[j] = swap;
}
/***************************************************************************
* Check if array is sorted - useful for debugging.
***************************************************************************/
// is the array a[] sorted?
private static boolean isSorted(Comparable[] a) {
return isSorted(a, 0, a.length - 1);
}
// is the array sorted from a[lo] to a[hi]
private static boolean isSorted(Comparable[] a, int lo, int hi) {
for (int i = lo + 1; i <= hi; i++)
if (less(a[i], a[i - 1]))
return false;
return true;
}
// is the array a[] sorted?
private static boolean isSorted(Object[] a, Comparator comparator) {
return isSorted(a, comparator, 0, a.length - 1);
}
// is the array sorted from a[lo] to a[hi]
private static boolean isSorted(Object[] a, Comparator comparator, int lo,
int hi) {
for (int i = lo + 1; i <= hi; i++)
if (less(comparator, a[i], a[i - 1]))
return false;
return true;
}
// print array to standard output
private static void show(Comparable[] a) {
for (int i = 0; i < a.length; i++) {
StdOut.println(a[i]);
}
}
public static void main(String[] args) {
String[] a = StdIn.readAllStrings();
// Selection.sort(a);
show(a);
}
}
然后是我的两个测试
1。http://algs4.cs.princeton.edu/21elementary/tiny.txt
S O R T E X A M P L E
2。http://algs4.cs.princeton.edu/21elementary/words3.txt
bed bug dad yes zoo
now for tip ilk dim
tag jot sob nob sky
hut men egg few jay
owl joy rap gig wee
was wad fee tap tar
dug jam all bad yet
我期望输出中的顺序增加,但没有输出。 我将运行配置 - Commman选项卡 - 输入文件设置为〜/ tiny.txt 但是当我申请并运行时,没有输出(我使用Eclipse Mars 4)
然后我想也许参数或类型可比较,因为它有很多警告,但我无法处理它。 任何人都可以告诉我如何解决问题:)
答案 0 :(得分:1)
edu.princeton.cs.algs4.StdOut
内部使用PrintWriter
初始化为out = new PrintWriter(new OutputStreamWriter(System.out, CHARSET_NAME), true);
。 println
方法只写入流,但不刷新。你可以这样做:
StdOut.print()
实习生拨打out.flush()
StdOut.print(Object o)
的flush()
方法
参考:StdOut.java