繁体   English   中英

BigInteger 排序,复杂度 O(n)

[英]BigInteger Sorting, Complexity O(n)

function 'bigSorting' 将 BigInteger 输入作为“字符串列表”。 我有一个单一的循环方法来对给定复杂度的字符串列表进行排序,但仍然没有对字符串进行排序/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;

    }

OUTPUT:(错误答案)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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM