0

我正在做一个作业,我想知道是否有一个容易移动的数组中的元素。我正在尝试按字母顺序对作者列表进行排序,所以我想将 array[1] 与 array[2] 进行比较,如果 2 属于 1 的前面,我只想将它移到那里。我认为最好的方法是使用两个 for 循环。这基本上就是我所拥有的。有没有什么简单的方法可以将 k 移到数组中 j 的前面?

for(int j = 0; i > j; j++) {
            for(int k = 0; k > i; k++) {
                if(array[j].getAuthor.compareTo(array[k]) == -1) {
                    //move k in front of j
                } else {
                                  //do nothing
                }
            }

        }
4

2 回答 2

0

你使用java,所以jdk为你提供了一个方法。

Arrays.sort(array,new Comparator<Object> {
      @Override
      public int compare(final Object pre, final Object next){
        //return 0, 1 ,-1 
}
)
于 2013-03-29T01:58:46.840 回答
0

Java 数组没有原始的“移到前面”操作。

您需要做的是重新考虑您的算法,以便它使用您可用的原始操作来工作。这些是*在特定偏移处获取和设置元素(使用array[i]),以及获取数组的长度(使用array.length)。

因此,如果要放在array[i]前面,则array[j]需要使用循环和分配将所有元素i向左j或向右移动。我会让你去解决细节......因为这显然是布置你作业的人希望你做的事情。


* - 实际上,有几个用于批量复制数组元素的库方法;例如System.arraycopy。但是,我建议您使用循环来实现它,以便您可以更好地了解所涉及的内容。

于 2013-03-29T02:39:32.910 回答