При делении каждого значения на последнее значение в последнем утверждении карты вы игнорируете тот факт, что все уже вычтено из первого значения.
Чтобы исправить это, вы должны разделить диапазон значений (разница между максимальным значением и минимальным значением).
Если ваш массив отсортирован, это будет:
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
}
Если вы собираетесь преподавать big-O, объясните хотя бы, что он описывает, как время для алгоритма масштабируется с увеличением входные данные - это не значит, что алгоритм займет меньше времени.
Например, для построения пирамид используется O (n), а для сортировки фотографий в лучшем случае O (n ln n). Поэтому быстрее построить другую пирамиду, чем привести в порядок свои праздничные снимки.
Студенты должны иметь представление о том, сколько времени занимает операция над регистром, в кеше, в основной памяти, на диске, в сети. Многие преподаватели только на языках очень высокого уровня не имеют понятия.
(это был комментарий, который кто-то хотел обсудить)
Все, кроме пузырьковой сортировки:
И самое главное: Big O нотации, чтобы вы знали, почему вы должны использовать один из них вместо Bubble sort.
Жизненный цикл разработки программного обеспечения - последовательность сбора требований, проектирования и анализа, внедрения, тестирования, поддержки и обслуживания. Это, наряду с такими методологиями, как «Водопад» и «Agile», в которых эти шаги применяются на практике, также является важным моментом для изучения.