Как этот цикл Java for должен выглядеть в псевдокоде?



Как я должен продолжать превращать этот фрагмент кода в псевдокод?



ArrayList<Integer> check = new ArrayList<Integer>();
ArrayList<Integer> dup = new ArrayList <Integer> ();
ArrayList<Integer> nonDup = new ArrayList <Integer> ();

for (int i : listA) {
nonDup.add(i);
}
for (int i : listB) {
nonDup.add(i);
}
for (int i : listA) {
check.add(i);
}
for (int i : listB) {
if (check.contains(i)) {
dup.add(i);
nonDup.removeAll(duplicates);
}
}


Я понятия не имею, как превратить методы for loops, add (), contains() и removeAll() в псевдокод.
598   4  

4 ответов:

Псевдокодом может быть все, что угодно. Поскольку вы или другие люди можете понять, что означают эти строки.

Вы можете превратить его просто как для (вашего значения переменной start) в (ваш конец желаемый) i++ -

В основном то, что заставляет людей и вас в основном понимать, что это цикл For

Это просто простой английский:

Initialize "check" as an empty (array-backed) list of integers.
Initialize "dup" as an empty (array-backed) list of integers.
Initialize "nonDup" as an empty (array-backed) list of integers.

For each integer in listA:
    Add the integer to "nonDup".
End of loop.

For each integer in listB:
    Add the integer to "nonDup".
End of loop.

For each integer in listA:
    Add the integer to "check".
End of loop.

For each integer in listB:
    If "check" contains the integer:
        Add the integer to "dup".
        Remove all integers in "dup" from "nonDup".
    End of if.
End of loop.
Обычно вам не нужно беспокоиться о псевдокодах. От них действительно мало пользы (кроме хвастовства)... я имею в виду, помогая вашим коллегам понять ваш код), и они не являются исполняемыми.

Например:

getNonDup(listA, listB):
    nonDup = listA + listB
    dup    = an empty list
    for each object i in listB do:
        if listA contains i do:
            add i to dup
            remove i from nonDup
    return nonDup

(мой стиль псевдокода чем-то похож на Python...)

В Java, чтобы иметь только уникальные значения, вы можете просто поместить их все в набор:

Set<Integer> nonDup = new HashSet<Integer>(listA.addAll(listB));

Как насчет чего-то вроде этого:

for each element in list A
    add element to list nonDup

Это в основном простой текст, который может быть прочитан кем угодно. Вы можете выбрать более говорящие имена для переменных. Вы также можете выбрать begin loop и end loop, чтобы показать область цикла вместо отступа.

Comments

    Ничего не найдено.