Поиск…


замечания

Введение в алгоритмы

Алгоритмы повсеместно распространены в области компьютерных наук и разработки программного обеспечения. Выбор соответствующих алгоритмов и структур данных повышает эффективность нашей программы в стоимости и времени.

Что такое алгоритм? Неформально алгоритм является процедурой для выполнения конкретной задачи. [Skiena: 2008: ADM: 1410219] В частности, алгоритм представляет собой четко определенную вычислительную процедуру, которая принимает некоторое значение (или набор значений) в качестве входных данных и выдает некоторое значение или набор значений в качестве вывода . Таким образом, алгоритм представляет собой последовательность этапов вычисления, которые преобразуют входной сигнал в выходной сигнал. Cormen et. и др. явно не замечает, что алгоритм не обязательно требует ввода. [Кормен: 2001: IA: 580470]

Формально алгоритм должен удовлетворять пяти особенностям: [Knuth: 1997: ACP: 260999]

  1. Конечность . Алгоритм должен всегда заканчиваться после конечного числа шагов.
  2. Определенность . Каждый шаг алгоритма должен быть точно определен; действия, которые необходимо выполнить, должны быть строго определены. Именно это качество [Cormen: 2001: IA: 580470] относится к термину «четко определенный».
  3. Вход . Алгоритм имеет ноль или более входных данных . Это величины, которые задаются алгоритму первоначально до его начала или динамически по мере его запуска.
  4. Выход . Алгоритм имеет один или несколько выходов . Это величины, которые имеют определенное отношение к входам. Мы ожидаем, что алгоритм выдаст один и тот же результат при повторении одного и того же ввода.
  5. Эффективность . Как правило, ожидается, что алгоритм будет эффективным . Его операции должны быть достаточно базовыми, чтобы их можно было выполнять в принципе и за конечный промежуток времени кем-то, использующим карандаш и бумагу.

Процедура, которая не имеет конечности, но удовлетворяющая всем остальным характеристикам алгоритма, может быть названа вычислительным методом . [Кнут: 1997: ACP: 260999]

Пример алгоритмической задачи

Алгоритмическая проблема задается путем описания полного набора экземпляров, над которыми он должен работать, и их вывода после запуска в одном из этих экземпляров. Это различие между проблемой и экземпляром проблемы является основополагающим. Алгоритмическая проблема, известная как сортировка , определяется следующим образом: [Skiena: 2008: ADM: 1410219]

  • Проблема: Сортировка
  • Вход: последовательность из n ключей, a_1, a_2, ..., a_n .
  • Выход: переупорядочение входной последовательности так, что a'_1 <= a'_2 <= ... <= a'_{n-1} <= a'_n

Экземпляром сортировки может быть массив строк, например { Haskell, Emacs } или последовательность чисел, например { 154, 245, 1337 } .

Начало работы с Simple Fizz Buzz Algorithm in Swift

Для тех из вас, кто новичок в программировании в Swift, и для тех из вас, которые исходят из разных баз программирования, таких как Python или Java, эта статья должна быть весьма полезной. В этом посте мы обсудим простое решение для реализации быстрых алгоритмов.

Fizz Buzz

Возможно, вы видели Fizz Buzz, написанную как Fizz Buzz, FizzBuzz или Fizz-Buzz; все они относятся к одному и тому же. Эта «вещь» является главной темой сегодняшнего обсуждения. Во-первых, что такое FizzBuzz?

Это общий вопрос, который возникает в собеседовании.

Представьте себе серию чисел от 1 до 10.

1 2 3 4 5 6 7 8 9 10

Fizz и Buzz относятся к любому числу, которое кратно 3 и 5 соответственно. Другими словами, если число делится на 3, оно заменяется на fizz; если число делится на 5, оно заменяется шумом. Если число одновременно кратно 3 И 5, число заменяется на «fizz buzz». По сути, он эмулирует знаменитую игру детей «fizz buzz».

Чтобы решить эту проблему, откройте Xcode, чтобы создать новую игровую площадку и инициализировать массив, как показано ниже:

// for example 
let number  = [1,2,3,4,5]
// here 3 is fizz and 5 is buzz

Чтобы найти все fizz и buzz, мы должны перебирать массив и проверять, какие числа являются fizz, а какие - шум. Для этого создайте цикл for для итерации через инициализированный массив:

for num in number {
  // Body and calculation goes here
}

После этого мы можем просто использовать условие «if else» и оператор модуля в swift ie -%, чтобы найти fizz и buzz

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else {
    print(num)
  }
}

Большой! Вы можете перейти на консоль отладки на игровой площадке Xcode, чтобы увидеть выход. Вы обнаружите, что «шипы» были отсортированы в вашем массиве.

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

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Проверьте выход!

Это довольно прямолинейно - вы разделили число на 3, fizz и разделили число на 5, гул. Теперь увеличьте числа в массиве

let number = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

Мы увеличили диапазон чисел от 1-10 до 1-15, чтобы продемонстрировать концепцию «fizz buzz». Поскольку 15 кратно и 3, и 5, число должно быть заменено на «fizz buzz». Попробуйте сами и проверьте ответ!

Вот решение:

for num in number {
  if num % 3 == 0 && num % 5 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Подожди ... это еще не конец! Вся цель алгоритма заключается в правильной настройке среды выполнения. Представьте, если диапазон увеличивается от 1-15 до 1-100. Компилятор проверяет каждый номер, чтобы определить, делится ли он на 3 или 5. Затем он снова пробегает числа, чтобы проверить, делятся ли числа на 3 и 5. Код, по существу, должен будет проходить через каждое число в массиве дважды - сначала нужно будет выполнить число на 3, а затем запустить его на 5. Чтобы ускорить процесс, мы можем просто сказать, что наш код будет делить числа на 15 напрямую.

Вот окончательный код:

for num in number {
  if num % 15 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Как простой, вы можете использовать любой язык по вашему выбору и приступить к работе

Наслаждайтесь кодированием



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow