Какие понятия Информатики я должен знать? [закрытый]

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

Чтобы исправить это, вы должны разделить диапазон значений (разница между максимальным значением и минимальным значением).

Если ваш массив отсортирован, это будет:

guard let maxValue = dates.last, let minValue = dates.first else {
    return
}
let percentages = dates
    .map {[110] - minValue}
    .map {[110] / (maxValue - minValue)}

Это нормализует все значения так, что первое значение равно 0, а последнее значение равно 1, а все остальное находится между ними.

Если вы не хотите нормализовать первое значение до 0 (но держите все от 0 до 1), вы можете пропустить шаг вычитания:

let percentages = dates.map {[111] / maxValue}

Если ваш массив не отсортирован, вы можете используйте функции .min() и .max() вашего массива:

guard let maxValue = dates.max(), let minValue = dates.min() else {
    return
}
92
задан 4 revs, 4 users 100% 14 April 2009 в 19:18
поделиться

33 ответа

Если вы собираетесь преподавать big-O, объясните хотя бы, что он описывает, как время для алгоритма масштабируется с увеличением входные данные - это не значит, что алгоритм займет меньше времени.
Например, для построения пирамид используется O (n), а для сортировки фотографий в лучшем случае O (n ln n). Поэтому быстрее построить другую пирамиду, чем привести в порядок свои праздничные снимки.

Студенты должны иметь представление о том, сколько времени занимает операция над регистром, в кеше, в основной памяти, на диске, в сети. Многие преподаватели только на языках очень высокого уровня не имеют понятия.

(это был комментарий, который кто-то хотел обсудить)

0
ответ дан 2 revs 24 November 2019 в 06:28
поделиться

Все, кроме пузырьковой сортировки:

  • Куча сортировки
  • Быстрая сортировка

И самое главное: Big O нотации, чтобы вы знали, почему вы должны использовать один из них вместо Bubble sort.

0
ответ дан 2 revs 24 November 2019 в 06:28
поделиться

Жизненный цикл разработки программного обеспечения - последовательность сбора требований, проектирования и анализа, внедрения, тестирования, поддержки и обслуживания. Это, наряду с такими методологиями, как «Водопад» и «Agile», в которых эти шаги применяются на практике, также является важным моментом для изучения.

0
ответ дан JB King 24 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: