我需要估计数组列表是否已排序(不排序)。
对字符串进行排序时,它们是按字母顺序排列的。我尝试使用compareTo()方法来确定哪个字符串先出现
如果数组列表已排序,则返回true,否则返回false。
代码:
public boolean isSorted()
{
boolean sorted = true;
for (int i = 1; i < list.size(); i++) {
if (list.get(i-1).compareTo(list.get(i)) != 1) sorted = false;
}
return sorted;
}
简单测试:
ArrayList<String> animals = new ArrayList<String>();
ArrayListMethods zoo = new ArrayListMethods(animals);
animals.add("ape");
animals.add("dog");
animals.add("zebra");
//test isSorted
System.out.println(zoo.isSorted());
System.out.println("Expected: true");
animals.add("cat");
System.out.println(zoo.isSorted());
System.out.println("Expected: false");
animals.remove("cat");
animals.add(0,"cat");
System.out.println(zoo.isSorted());
System.out.println("Expected: false");
**Output:**
false
Expected: true
false
Expected: false
false
Expected: false
这个简单的测试只显示1/3
覆盖率。
如何解决这个问题。
试试这个
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Sort {
public static void main(String []args) {
List<String> l1=new ArrayList<String>();
List<String> l2=new ArrayList<String>();
l1.add("a");
l1.add("b");
l1.add("c");
l2.add("b");
l2.add("c");
l2.add("a");
if(isSorted(l1)){
System.out.println("already sorted");
}
else{
Collections.sort(l1);
}
}
public static boolean isSorted(List<String> list){
String previous = "";
for (String current: list) {
if (current.compareTo(previous) < 0)
return false;
previous = current;
}
return true;
}
}
更改条件:
if (list.get(i - 1).compareTo(list.get(i)) >0)
你应该检查
通过比较的留档To()
如果参数字符串等于此字符串,则值为0;如果此字符串在字典上小于字符串参数,则值小于0;如果该字符串在字典上大于字符串参数,则该值大于0。
你的方法中有一个小错误。应该是:
public boolean isSorted()
{
boolean sorted = true;
for (int i = 1; i < list.size(); i++) {
if (list.get(i-1).compareTo(list.get(i)) > 0) sorted = false;
}
return sorted;
}
问题内容: 我正在尝试编写一个函数,该函数将测试列表是否按降序排列。到目前为止,这是我所拥有的,但似乎不适用于所有列表。 我使用了列表,它返回了。 我似乎无法弄清楚我的错误在哪里。 问题答案: 您宁可进行反向检查(一旦获得,则返回false
问题内容: 用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类问题,但我正全神贯注。 如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。 问题答案: Guava 通过其出色的Ordering类提供了此功能。An 是。在这种情况下,如果你具有实现的某种类型的列表,则可以编写: 这适用于任何,而不仅仅是,你可以通过指定s应该在其他任何非元素之前还是之后轻松地处理s :
问题内容: 我所说的结构是: 操作复杂度O(log n) O(log n)查找元素的复杂度 O(n)复杂度进行计算,将被排序 问题答案: 标准Python列表不以任何形式排序。标准的heapq模块可用于将O(log n)追加到现有列表中,并删除O(log n)中最小的模块,但在定义中不是排序列表。 有许多符合您需求的Python平衡树实现,例如rbtree,RBTree或pyavl。
问题内容: 我需要确定数组中是否存在值。 我正在使用以下功能: 上面的函数总是返回false。 数组值和函数调用如下: 问题答案: 你可以像这样使用它:
我有一个java中的double列表,我想按降序排列ArrayList。 输入ArrayList如下所示: 输出应该是这样的
所以我有5个块(假设大小为2000个项目),每个块都是经过排序的数据。是否有一种算法能够利用此属性优化整个10000个项目的排序?