BigInteger排序,复杂度O(n)



函数'bigSorting'接受BigInteger作为'List of Strings'的输入。我有一个单循环的方法来排序字符串列表在给定的复杂性,但仍然,字符串没有排序/BigInteger列表没有排序。

输入:(字符串列表)31415926535897932384626433832795,1,3.10,3.5

public static List<String> bigSorting(List<String> u) {
// Write your code here
String S = "";

for(int i = 0; i<u.size()-1; i++)
{
BigInteger a = new BigInteger(u.get(i));
BigInteger b = new BigInteger(u.get(i+1));
int x = a.compareTo(b);
if(x>1)
{
S = u.get(i);
u.set(i,u.get(i+1));
u.set(i+1,S);
i = -1;
}
}

return u;
}

输出:(错误的答案)31415926535897932384626433832795,1,3.10,3.5

int x = a.compareTo(b);
if(x>1)

这个条件永远不会通过。compareTo的文档说

返回:- 1,0或1,当此BigInteger小于、等于或大于val。

所以x可能是1,但它永远不会大于1。你可能指的是x > 0

注:看来你已经实现了一个冒泡排序,这是一个O(N^2)算法,而不是O(N)。

最新更新