繁体   English   中英

如何使用末尾添加的另一个列表中的数据对列表进行排序?

[英]How can I sort a list with data from another list adding at the end?

实现一个名为 sort 的实例方法,假设列表包含大于 0 的值且其所有元素都不同,它使用以下策略返回一个新的有序列表:“从列表中选择次要元素并将其放在结果列表”。 请注意,不应修改原始列表。

    public IntegerLinkedList sort(IntegerLinkedList l){
        IntegerLinkedList l2 = new IntegerLinkedList ();
        int min = Integer.MAX_VALUE;
        int min_prev = Integer.MIN_VALUE;
        int pos;
        for (int i=0; i<l.length(); i++){
            pos=0;          
            while (pos<l.length()) {
                if ((l.element(pos) < min) & (l.element(pos) > min_prev)){                  
                    min = l.element(pos);
                }
                pos++;
            }                       
            min_prev=min;
            l2.AddAtTheEnd(min);
        }
        return l2;
}
List: 2 -> 8 -> 4 -> 6 -> 1 -> 3 -> 7 -> 9 -> 5 -> 10

第一次在大学看到 Java 中的列表。 所以我的问题是我一直无法停止将 1 添加到 l2 。 这段代码是我所拥有的想法,但它返回一个 10 长的列表,里面全是 1。有时 1 不小于 1 也不大于 1。我需要“避免”最后一个最小的相加数字,所以我可以添加其他大于 min 的。

谢谢!

在第一次运行 for 循环后, min为 1。它永远不会被设置为任何其他值: (l.element(pos) < 1)对于除 1 之外的所有元素都是 false。

您需要在循环的每次运行中重置min的值。

    for (int i=0; i<l.length(); i++){
        int min = Integer.MAX_VALUE;
        pos=0;          
        while (pos<l.length()) {

暂无
暂无

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

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