1. Просто составь алгоритм (например, в виде блок схемы).Не знаю что у вас понимается под словосочетанием "проанализировать алгоритм" но я бы определил сложность алгоритма, для этих двух программок легко реализовать O(n) (за один цикл (проход помассиву), можешь посчитать число сравнений тогда уточнишь сложность (O(3*n), O(4*n)) ну и подобное, вообщем видимость создал бы работы! 2. Ну тут делать нечего, просто перепиши из первой задачи сложности =)
3.Алгоритмы с экспоненциальной сложность O(2^n) растут быстрее, чем алгоритмы с полиномиальной сложностью O(n^2), O(n^3) (при n стрем. к бесконечности). Как это правильно надо доказывать я не знаю, можно например график построить в маткаде еще куча табличек в интернете есть где сравниваются числовые значения при разных n =))
4.Легкая задача, блок схема для вычисления ряда (x^n)/n! можно конечно так и считать, но этот ряд есть разложение в Маклорена функции e^n. Потом в схеме это можно учесть, если n>12 то считать так e^n -1 .Не знаю на сколько это рационально, но тогда меньше писать придется в самом коде программы, например для n=100 при вычислении по первому методу придется считать 100! это дополнительная функция и "длинная" арифметика а так просто подставил e^100 и компьютер сам считает (хотя тут тоже загвоздка, комп наврятле точно посчитает n!, даже маткад не считает с нужной точностю, так что вероятно нужно использовать первый метод всегда,) =))
5.Задача оптимизации, вроде бы.Существуют готовые алгоритмы для многих типов этих задач.Что-то конкретное подсказать не могу, не сталкивался.
6.НУ алгоритм Дейкстры, в сети есть реализации на всех языках программирования. Составишь матрицу переходов по заданному графу и натравишь на нее этот алгоритм, а если вручную надо то WIKI в помощь, там просто и понятно все описано как он работает =)
Всё вышесказанное мои личные предположения, возможно что-то неправильно.Знания у меня разрозненные, полученные самостоятельно, нигде ничему этому я специально не обучался.