здравствуйте ребята мы с вами продолжаем изучение темы алгоритмы и исполнители на прошлом уроке мы познакомились с вами с таким формальным исполнителем среды программирования кумир как чертежник давайте мы сейчас с вами немного вспомним что это за исполнитель что он умеет и где он действует координатная плоскость является средой исполнителя чертежник по умолчанию при запуске программы я напоминаю считается что перо которым рисует чертежник находится над точкой 00 в начале координат в поднятом состоянии если нам необходимо начать рисовать то первое что мы должны сделать это разместить перо вместо начала рисунка и опустить его и так система команд исполнителя чертежник состоит из команд опустить перо поднять перо сместится в точку и сместится на вектор сместится в точку а.б. где а бы является координатой точки а это координата по оси x бы эта координата по оси y сместится на вектор а б тоже обе координаты точки координаты вектора а смещение по оси x б смещение по оси y чем отличаются эти два смещения абсолютное и относительное мы должны были сами разобраться на прошлом уроке и из прошлого же урока ребят вы должны были запомнить что мы с вами все рисунки рисуем используя смещение на виктора и только один раз мы можем использовать сместится в точку когда нам нужно установить перо в точку начала рисунка все остальное мы рисуем векторами я напоминаю для чего нам это нужно если вдруг нам возникнет необходимость переместить на другое место координатной плоскости наш рисунок то для того чтобы это сделать нам будет достаточно изменить только первую команду смещение в точку откуда рисунок на чит а если остальные команды были сместится на вектор то нам этого делать не придется мы сегодня ещё во время практического занятия помним смещение в точку смещения на виктор итак для того чтобы написать чертежник у программы в среде кумир мы с вами должны знать что существуют определенные правила написания алгоритмов так называемая структура программы для среды кумир вспоминаем эту структуру у вас тетрадь ребят это должно быть записано и вы должны запомнить что за чем идёт сначала мы указываем каким исполнителем мы пользуемся потом мы пишем служебное слово а после которого пишем имя программы дальше служебное слово ночь непосредственно команды для исполнителя и заканчивается все служебным словом конт сегодня мы с вами рассмотрим новую тему урока ребят называется тема вспомогательные алгоритмы запишите пожалуйста себе в тетрадь исполнитель чертёжник вспомогательные алгоритмы рассмотрим эту тему с вами на примере написания программы для для чертежника чтобы было написано слово мама и так как мы с вами начнем работать на прошлом уроке мы уже научились и знаем что рисует чертежник отрезками все что нам надо это указать из какой точки мы нужно переместиться с опущенным пером и первое с чего мы начнем мы начнем писать алгоритм для написания буквы м я его называю например букву сделала нижнее подчёркивание м дальше по структуре ночь и начинаю опустить перо опустила перо сместится на вектор 04 что значит сместится на вектор первая координата это смещение по оси x мы находясь в точке 0 0 никуда не смещаемся поэтому 0 а вот по оси y нам нужно подняться на 4 единицы раз-два-три-четыре таким образом получился отрезок один из отрезков буквы м следующий момент из точки 04 такого координата этой точки нам нужно переместиться в точку 1 2 давайте рассуждать как нам рассчитать на какой вектор нужно сместиться начальной точки координата x 0 а в конечной точки координата x 11 как из нуля получить один конечно прибавить 1 поэтому я виктор записываю 1 теперь рассматриваем ось y в начальной точке y равен 4 вот раз два три четыре в конечной точке y равен 1 2 2 как из четырех получить два отнять 2 вот мы пишем сместится на вектор 1 -2 рассчитывая подобным образом смещения мы с вами дописываем алгоритм для написания буквы м следующий алгоритм будет для написания буквы а называем его буква а и точно таким же образом аналогичным рассчитываем конвектора смещаемся и пишем букву а причем обратите внимание ребят здесь мы начинаем с начала координат поэтому никуда не смещаемся в какую точку в самом начале сразу опускаем герои начинаем рисование написали алгоритм для написания буква теперь давайте думать нам с вами нужно написать слово мама что нам для этого придется сделать нам нужно будет в общем алгоритме под названием мама сначала написать алгоритм для написания буквы м а потом алгоритм для написания буквы а алгоритм для буквы м и алгоритм для буква правильно то есть у нас вся программа состоит из четырех блоков а фактически из 2 каждый из которых повторяется дважды согласитесь глядя на эту программу достаточно громоздко она получилась если вы сами не знали что-то написано слово мама вряд ли бы нам было понятно что будет в результате но тем ни менее после запуска программы мы получаем с вами написанное слово мама что не так что мы теле бы исправить здесь правильно ребята нам нужно расстояние между буквами сделал сделать да каким образом мы можем это предусмотреть конечно для того чтобы сделать расстояние между буквами после написания каждой мы должны сделать смещение на одну единицу по оси x значит смещение на вектор 10 то есть наш с вами алгоритм примет вот такой вид мы каждый после каждой буквы добавляем сместится на вектор 10 и сместится на вектор 10 и тогда результат то что мы хотим казалось бы можно оставить программы в таком виде но посмотрите какое маленькое слово всего 4 буквы какой громоздки алгоритм на самом деле ребята у чертежника среди кумир есть инструмент который позволяет запомнить последовательность команд которая использовалась при создании какой-либо фигуры и по необходимости использовать эти команды столько раз сколько захочется итак мы сегодня с вами рассматриваем тему урока который называется вспомогательные алгоритмы чтобы определить что это такое давайте вспомним с вами когда мы изучали тему алгоритмов мы говорили что все алгоритмы можно разбить на отдельные под задачи на кусочки маленькие и алгоритмы состоят из этих подзадач по-другому ребята они называются процедуры или вспомогательные алгоритмы вот мы с вами в данном примере рассматриваем большой основной алгоритм написание слова мамы но из чего он состоит он состоит из маленькой под задачки написать букву н и из маленькой под задачки написать букву а просто выполняются эти под задачки по два раза вот как же нам это предусмотреть чтобы каждый раз не переписывать все эти команды есть такая возможность давайте ребят сначала запишем определение что такое вспомогательные алгоритмы или по-другому процедуру запишите пожалуйста себе в тетрадь что это алгоритм по которому решается некая подзадача из основной задачей и которые как правило выполняется многократно запишите себе это определение и давайте посмотрим как же мне написать этот алгоритм чтобы он читаем и был чтобы не был таким громоздким и чтобы глядя на него я сразу понимала какой будет результат после выполнения начнем с основного алгоритма пишет использовать чертежник алк нач а дальше ребята посмотрите вместо того чтобы писать конкретные команды я пишу название алгоритмов написанных ранее смотрите вот это под задачка или по-другому вспомогательные алгоритмы для написания буквы м она называлась нас буква нижнее подчёркивание м и я в основном алгоритме просто вызываю этот алгоритм далее буква а это название другого алгоритма вспомогательного для написания этой буквы и потом я обращаюсь просто к названиям и этих вспомогательных алгоритмов тогда при запуске программы как начнет действовать чертежник он дойдет до буквы м видит название буквы м нами видит команд пойдет дальше вниз и внизу он должен найти это название тогда он выполнит те процедуры которые прописаны в этом в этом вспомогательном алгоритм дальше он видит название буква а идет вниз ищет это название и выполняет описанные команды и вот здесь сколько раз мы с вами ребята укажем название этих вспомогательных алгоритмов столько раз он их и выполнит поэтому при написании программы мы с вами пишем сначала основной алгоритм в котором вместо команд мы пишем именно под задач или вспомогательных алгоритмов а ниже вот здесь мы с вами должны написать полностью вот эти вспомогательные алгоритмы прямо со всеми служебными словами алко буква м ночь сами com and i can all буква а ночами команды икон и тогда чертежник найдет все эти команды и напиши нам сами слова мама запишите пожалуйста для себя что алгоритм решающий некую под задачу основной задачи называется вспомогательным алгоритмом а приказ на выполнение вспомогательного алгоритма записывается в основном алгоритме и можно здесь еще добавить вызывая процедуру по ее названию это важно итак ребята сейчас мы с вами на практике попробуем выполнить такую задачу написание никого алгоритма состоящего из нескольких процедур или вспомогательных алгоритмов
АЛГОРИТМЫ в ПРОГРАММИРОВАНИИ для новичков | Левенштейн, Фибоначчи, Факториал и т.д.
Источник: znanio.ru
Местодический прием «Алгоритм. Составление алгоритма» на уроке: способы работы с алгоритмами на уроках
Егорова Елена 5.0
Отзыв о товаре ША PRO Анализ техники чтения по классам
и четвертям
Хочу выразить большую благодарность от лица педагогов начальных классов гимназии «Пущино» программистам, создавшим эту замечательную программу! То, что раньше мы делали «врукопашную», теперь можно оформить в таблицу и получить анализ по каждому ученику и отчёт по классу. Великолепно, восторг! Преимущества мы оценили сразу.
С начала нового учебного года будем активно пользоваться. Поэтому никаких пожеланий у нас пока нет, одни благодарности. Очень простая и понятная инструкция, что немаловажно! Благодарю Вас и Ваших коллег за этот важный труд. Очень приятно, когда коллеги понимают, как можно «упростить» работу учителя.
Наговицина Ольга Витальевна 5.0
учитель химии и биологии, СОШ с. Чапаевка, Новоорский район, Оренбургская область
Отзыв о товаре ША Шаблон Excel Анализатор результатов ОГЭ
по ХИМИИ
Спасибо, аналитическая справка замечательная получается, ОГЭ химия и биология. Очень облегчило аналитическую работу , выявляются узкие места в подготовке к экзамену. Нагрузка у меня, как и у всех учителей большая. Ваш шаблон экономит время , своим коллегам я Ваш шаблон показала, они так же его приобрели. Спасибо.
Чазова Александра 5.0
Отзыв о товаре ША Шаблон Excel Анализатор результатов ОГЭ по
МАТЕМАТИКЕ
Очень хороший шаблон, удобен в использовании, анализ пробного тестирования занял считанные минуты. Возникли проблемы с распечаткой отчёта, но надо ещё раз разобраться. Большое спасибо за качественный анализатор.
Лосеева Татьяна Борисовна 5.0
учитель начальных классов, МБОУ СОШ №1, г. Красновишерск, Пермский край
Отзыв о товаре Изготовление сертификата или свидетельства конкурса
Большое спасибо за оперативное изготовление сертификатов! Все очень красиво . Мой ученик доволен, свой сертификат он вложил в портфолио . Обязательно продолжим с Вами сотрудничество!
Язенина Ольга Анатольевна 4.0
учитель начальных классов, ОГБОУ «Центр образования для детей с особыми образовательными потребностями г. Смоленска»
Отзыв о товаре Вебинар Как создать интересный урок:
инструменты и приемы
Я посмотрела вебинар! Осталась очень довольна полученной информацией. Всё очень чётко, без «воды». Всё, что сказано, показано, очень пригодится в практике любого педагога. И я тоже обязательно воспользуюсь полезными материалами вебинара.
Спасибо большое лектору за то, что она поделилась своим опытом!
Арапханова Ашат 5.0
ША Табель посещаемости + Сводная для ДОУ ОКУД
Хотела бы поблагодарить Вас за такую помощь. Разобралась сразу же , всё очень аккуратно и оперативно. Нет ни одного недостатка. Я не пожалела, что доверилась и приобрела у вас этот табель. Благодаря Вам сэкономила время , сейчас же составляю табель для работников.
Удачи и успехов Вам в дальнейшем!
Дамбаа Айсуу 5.0
Отзыв о товаре ША Шаблон Excel Анализатор результатов ЕГЭ по
РУССКОМУ ЯЗЫКУ
Спасибо огромное, очень много экономит времени , т.к. анализ уже готовый, и особенно радует, что есть варианты с сочинением, без сочинения, только анализ сочинения! Превосходно!
Отправляя материал на сайт, автор безвозмездно, без требования авторского вознаграждения, передает редакции права на использование материалов в коммерческих или некоммерческих целях, в частности, право на воспроизведение, публичный показ, перевод и переработку произведения, доведение до всеобщего сведения — в соотв. с ГК РФ. (ст. 1270 и др.). См. также Правила публикации конкретного типа материала. Мнение редакции может не совпадать с точкой зрения авторов.
Для подтверждения подлинности выданных сайтом документов сделайте запрос в редакцию.
Хостинг от uCoz
- Опубликовать урок
- Опубликовать статью
- Дать объявление
- Подписаться на новости
- Частые вопросы
сервис вебинаров —>
О работе с сайтом
Алгоритмы и структуры данных на Python
Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм) | Алгоритмы на Python
t = «лилила» p = [0]*len(t) j = 0 i = 1 while i < len(t): if t[j] == t[i]: p[i] = j+1 i += 1 j += 1 else: if j == 0: p[i] = 0; i += 1 else: j = p[j-1] print(p) a = «лилилось лилилась» m = len(t) n = len(a) i = 0 j = 0 while i < n: if a[i] == t[j]: i += 1 j += 1 if j == m: print(«образ найден») break else: if j >0: j = p[j-1] else: i += 1 if i == n and j != m: print(«образ не найден»)
Алгоритм Бойера-Мура-Хорспула | Алгоритмы на Python
t = «данные» # Этап 1: формирование таблицы смещений S = set() # уникальные символы в образе M = len(t) # число символов в образе d = <> # словарь смещений for i in range(M-2, -1, -1): # итерации с предпоследнего символа if t[i] not in S: # если символ еще не добавлен в таблицу d[t[i]] = M-i-1 S.add(t[i]) if t[M-1] not in S: # отдельно формируем последний символ d[t[M-1]] = M d[‘*’] = M # смещения для прочих символов print(d) # Этап 2: поиск образа в строке a = «метеоданные» N = len(a) if N >= M: i = M-1 # счетчик проверяемого символа в строке while(i < N): k = 0 j = 0 flBreak = False for j in range(M-1, -1, -1): if a[i-k] != t[j]: if j == M-1: off = d[a[i]] if d.get(a[i], False) else d[‘*’] # смещение, если не равен последний символ образа else: off = d[t[j]] # смещение, если не равен не последний символ образа i += off # смещение счетчика строки flBreak = True # если несовпадение символа, то flBreak = True break k += 1 # смещение для сравниваемого символа в строке if not flBreak: # если дошли до начала образа, значит, все его символы совпали print(f»образ найден по индексу «) break else: print(«образ не найден») else: print(«образ не найден»)
Алгоритм Дейкстры (Dijkstra’s algorithm) | Алгоритмы на Python
import math def arg_min(T, S): amin = -1 m = math.inf # максимальное значение for i, t in enumerate(T): if t < m and i not in S: m = t amin = i return amin D = ((0, 3, 1, 3, math.inf, math.inf), (3, 0, 4, math.inf, math.inf, math.inf), (1, 4, 0, math.inf, 7, 5), (3, math.inf, math.inf, 0, math.inf, 2), (math.inf, math.inf, 7, math.inf, 0, 4), (math.inf, math.inf, 5, 2, 4, 0)) N = len(D) # число вершин в графе T = [math.inf]*N # последняя строка таблицы v = 0 # стартовая вершина (нумерация с нуля) S = # просмотренные вершины T[v] = 0 # нулевой вес для стартовой вершины M = [0]*N # оптимальные связи между вершинами while v != -1: # цикл, пока не просмотрим все вершины for j, dw in enumerate(D[v]): # перебираем все связанные вершины с вершиной v if j not in S: # если вершина еще не просмотрена w = T[v] + dw if w < T[j]: T[j] = w M[j] = v # связываем вершину j с вершиной v v = arg_min(T, S) # выбираем следующий узел с наименьшим весом if v >= 0: # выбрана очередная вершина S.add(v) # добавляем новую вершину в рассмотрение #print(T, M, sep=»n») # формирование оптимального маршрута: start = 0 end = 4 P = [end] while end != start: end = M[P[-1]] P.append(end) print(P)
Алгоритм Флойда (Floyd’s algorithm) | Алгоритмы на Python
import math def get_path(P, u, v): path = [u] while u != v: u = P[u][v] path.append(u) return path V = [[0, 2, math.inf, 3, 1, math.inf, math.inf, 10], [2, 0, 4, math.inf, math.inf, math.inf, math.inf, math.inf], [math.inf, 4, 0, math.inf, math.inf, math.inf, math.inf, 3], [3, math.inf, math.inf, 0, math.inf, math.inf, math.inf, 8], [1, math.inf, math.inf, math.inf, 0, 2, math.inf, math.inf], [math.inf, math.inf, math.inf, math.inf, 2, 0, 3, math.inf], [math.inf, math.inf, math.inf, math.inf, math.inf, 3, 0, 1], [10, math.inf, 3, 8, math.inf, math.inf, 1, 0], ] N = len(V) # число вершин в графе P = [[v for v in range(N)] for u in range(N)] # начальный список предыдущих вершин для поиска кратчайших маршрутов for k in range(N): for i in range(N): for j in range(N): d = V[i][k] + V[k][j] if V[i][j] > d: V[i][j] = d P[i][j] = k # номер промежуточной вершины при движении от i к j # нумерацця вершин начинается с нуля start = 1 end = 4 print(get_path(P, end, start))
Алгоритм Форда-Фалкерсона | Алгоритмы на Python
import math def get_max_vertex(k, V, S): m = 0 # наименьшее допустимое значение v = -1 for i, w in enumerate(V[k]): if i in S: continue if w[2] == 1: # движение по стрелке if m < w[0]: m = w[0] v = i else: # движение против стрелки if m < w[1]: m = w[1] v = i return v def get_max_flow(T): w = [x[0] for x in T] return min(*w) def updateV(V, T, f): for t in T: if t[1] == -1: # это исток continue sgn = V[t[2]][t[1]][2] # направление движения # меняем веса в таблице для (i,j) и (j,i) V[t[1]][t[2]][0] -= f * sgn V[t[1]][t[2]][1] += f * sgn V[t[2]][t[1]][0] -= f * sgn V[t[2]][t[1]][1] += f * sgn V = [[[0,0,1], [20,0,1], [30,0,1], [10,0,1], [0,0,1]], [[20,0,-1], [0,0,1], [40,0,1], [0,0,1], [30,0,1]], [[30,0,-1], [40,0,-1], [0,0,1], [10,0,1], [20,0,1]], [[10,0,-1], [0,0,1], [10,0,-1], [0,0,1], [20,0,1]], [[0,0,1], [30,0,-1], [20,0,-1], [20,0,-1], [0,0,1]], ] N = len(V) # число вершин в графе init = 0 # вершина истока (нумерация с нуля) end = 4 # вершина стока Tinit = (math.inf, -1, init) # первая метка маршруто (a, from, vertex) f = [] # максимальные потоки найденных маршрутов j = init while j != -1: k = init # стартовая вершина (нумерация с нуля) T = [Tinit] # метки маршрута S = # множество просмотренных вершин while k != end: # пока не дошли до стока j = get_max_vertex(k, V, S) # выбираем вершину с наибольшей пропускной способностью if j == -1: # если следующих вершин нет if k == init: # и мы на истоке, то break # завершаем поиск маршрутов else: # иначе, переходим к предыдущей вершине k = T.pop()[2] continue c = V[k][j][0] if V[k][j][2] == 1 else V[k][j][1] # определяем текущий поток T.append((c, j, k)) # добавляем метку маршрута S.add(j) # запоминаем вершину как просмотренную if j == end: # если дошди до стока f.append(get_max_flow(T)) # находим максимальную пропускную способность маршрута updateV(V, T, f[-1]) # обновляем веса дуг break k = j F = sum(f) print(f»Максимальный поток равен: «)
Алгоритм Краскала (Kruskal’s algorithm) | Алгоритмы на Python
#————————————————- # Алгоритм Краскала поиска минимального остова графа #————————————————- # список ребер графа (длина, вершина 1, вершина 2) R = [(13, 1, 2), (18, 1, 3), (17, 1, 4), (14, 1, 5), (22, 1, 6), (26, 2, 3), (22, 2, 5), (3, 3, 4), (19, 4, 6)] Rs = sorted(R, key=lambda x: x[0]) U = set() # список соединенных вершин D = <> # словарь списка изолированных групп вершин T = [] # список ребер остова for r in Rs: if r[1] not in U or r[2] not in U: # проверка для исключения циклов в остове if r[1] not in U and r[2] not in U: # если обе вершины не соединены, то D[r[1]] = [r[1], r[2]] # формируем в словаре ключ с номерами вершин D[r[2]] = D[r[1]] # и связываем их с одним и тем же списком вершин else: # иначе if not D.get(r[1]): # если в словаре нет первой вершины, то D[r[2]].append(r[1]) # добавляем в список первую вершину D[r[1]] = D[r[2]] # и добавляем ключ с номером первой вершины else: D[r[1]].append(r[2]) # иначе, все то же самое делаем со второй вершиной D[r[2]] = D[r[1]] T.append(r) # добавляем ребро в остов U.add(r[1]) # добавляем вершины в множество U U.add(r[2]) for r in Rs: # проходим по ребрам второй раз и объединяем разрозненные группы вершин if r[2] not in D[r[1]]: # если вершины принадлежат разным группам, то объединяем T.append(r) # добавляем ребро в остов gr1 = D[r[1]] D[r[1]] += D[r[2]] # объединем списки двух групп вершин D[r[2]] += gr1 print(T)
Алгоритм Прима (ближайшего соседа) | Алгоритмы на Python
#————————————————- # Алгоритм Прима поиска минимального остова графа #————————————————- import math def get_min(R, U): rm = (math.inf, -1, -1) for v in U: rr = min(R, key=lambda x: x[0] if (x[1] == v or x[2] == v) and (x[1] not in U or x[2] not in U) else math.inf) if rm[0] > rr[0]: rm = rr return rm # список ребер графа (длина, вершина 1, вершина 2) # первое значение возвращается, если нет минимальных ребер R = [(math.inf, -1, -1), (13, 1, 2), (18, 1, 3), (17, 1, 4), (14, 1, 5), (22, 1, 6), (26, 2, 3), (19, 2, 5), (30, 3, 4), (22, 4, 6)] N = 6 # число вершин в графе U = # множество соединенных вершин T = [] # список ребер остова while len(U) < N: r = get_min(R, U) # ребро с минимальным весом if r[0] == math.inf: # если ребер нет, то остов построен break T.append(r) # добавляем ребро в остов U.add(r[1]) # добавляем вершины в множество U U.add(r[2]) print(T)
Сортировка выбором | Алгоритмы на Python
#————————————————- # Алгоритм сортировки выбором #————————————————- a = [-3, 5, 0, -8, 1, 10] N = len(a) # число элементов в списке for i in range(N-1): m = a[i] # запоминаем минимальное значение p = i # запоминаем индекс минимального значения for j in range(i+1, N): # поиск миимального среди оставшихся элементов if m > a[j]: m = a[j] p = j if p != i: # обмен значениями, если был найден минимальный не в i-й позиции t = a[i] a[i] = a[p] a[p] = t print(a)
Сортировка вставками | Алгоритмы на Python
#————————————————- # Алгоритм сортировки вставками #————————————————- a = [-3, 5, 0, -8, 1, 10] N = len(a) # число элементов в списке for i in range(1, N): for j in range(i, 0, -1): if a[j] < a[j-1]: a[j], a[j-1] = a[j-1], a[j] else: break print(a)
Сортировка пузырьком (метод всплывающего пузырька) | Алгоритмы на Python
#————————————————- # Алгоритм сортировки пузырьком #————————————————- a = [7, 5, -8, 0, 10, 1] N = len(a) # число элементов в списке for i in range(0, N-1): # N-1 итераций работы алгоритма for j in range(0, N-1-i): # проход по оставшимся не отсортированным парам массива if a[j] > a[j+1]: a[j], a[j+1] = a[j+1], a[j] print(a)
Слияние двух упорядоченных списков | Алгоритмы на Python
#————————————————- # Метод слияния двух списков #————————————————- a = [1, 4, 10, 11] b = [2, 3, 3, 4, 8] c = [] N = len(a) M = len(b) i = 0 j = 0 while i < N and j < M: if a[i]
Быстрая сортировка слиянием (merge sort) | Алгоритмы на Python
#————————————————- # Сортировка слиянием #————————————————- # функция слияния двух отсортированных списков def merge_list(a, b): c = [] N = len(a) M = len(b) i = 0 j = 0 while i < N and j < M: if a[i] 1: # если длина 1-го списка больше 1, то делим дальше a1 = split_and_merge_list(a1) if len(a2) > 1: # если длина 2-го списка больше 1, то делим дальше a2 = split_and_merge_list(a2) return merge_list(a1, a2) # слияние двух отсортированных списков в один a = [9, 5, -3, 4, 7, 8, -8] a = split_and_merge_list(a) print(a)
Быстрая сортировка Хоара | Алгоритмы на Python
#————————————————- # Быстрая сортировка Хоара через рекурсию #————————————————- import random def quick_sort(a): if len(a) > 1: x = a[random.randint(0, len(a)-1)] # случайное пороговое значение (для разделения на малые и большие) low = [u for u in a if u < x] eq = [u for u in a if u == x] hi = [u for u in a if u >x] a = quick_sort(low) + eq + quick_sort(hi) return a a = [9, 5, -3, 4, 7, 8, -8] a = quick_sort(a) print(a)
Стек типа LIFO (Last-In-First-Out) | Алгоритмы на Python
# Пример использования стека типа LIFO a = input(«Введите строку: «) stack = [] flVerify = True for lt in a: if lt in «([«: if len(stack) == 0: flVerify = False break br = stack.pop() if br == ‘(‘ and lt == ‘)’: continue if br == ‘[‘ and lt == ‘]’: continue if br == »: continue flVerify = False break if flVerify and len(stack) == 0: # стек по итогам проверок должен быть пустым print(«Yes») else: print(«No»)
Делаем очередь (queue) | Алгоритмы на Python
Возможно вам будет интересно:
Источник: bookflow.ru