我有两个文件,一个是驱动程序,另一个是有两个方法,第一个是插入排序,第二个是打印方法。插入排序应按字典顺序对字符串数组进行排序。
import java.util.Arrays;
公共类实用程序{
public static void insertionSort(String[] array) {
//TODO
for ( int i=1 ; i<array.length; i++)
{
int j = i;
String str1 = array[j-1];
String str2 = array[j];
while (j>0 && str1.compareTo(str2)>0)
{
String t = array[j];
array[j] = array[j-1];
array[j-1] =t;
j = j-1;
}
}
}
public static void printArray(String[] array) {
String t = Arrays.toString(array);
System.out.println(t);
}
}
这是我的司机
public class Driver {
public static void main(String[] args) {
String[] names = {"Tom", "Steve","Ann","Zoe","Bob","Moana","Naomi","Kevin","Ryan","Nina","Dora","Wanda","Eric"};
System.out.println("Unsorted array:");
Utility.printArray(names);
System.out.println("Sorted array:");
Utility.insertionSort(names);
Utility.printArray(names);
}
}
我试图对数组进行排序,但是我不知道为什么不进行排序,这是因为我的insertSort方法是驱动程序中的某事
这是我尝试遵循的伪代码
for i=1 to length(A)
j =i
while j > 0 and A[j-1] > A[j]
swap A[j] and A[j-1]
j =j -1
end while
结束
答案 0 :(得分:0)
我在您的原始算法中发现了两个错误:
我的建议
for
形式。在声明维护条件时,只包括一个简单的关系比较。if
来实现。