Автор оригинала: Robin Andrews.
Я твердый верующий, предлагая широкое разнообразие перспектив на темах, которые я учу в информатике. Мне также нравится делать связи между информатикой и другими предметами. В этот конец я даю вам:
Сортировка пузыря представлена через нетрадиционную среду для вашего интереса и рассмотрения в качестве помощи обучения
Вы можете услышать его в действии здесь:
Этот трек был сделан с использованием языка программирования Python, а также небольшая библиотека под названием MusicalBeeps Отказ Вы можете найти пакет на Пипи здесь Отказ Чтобы установить его, просто используйте Пип Установите MusicalBeeps из командной строки.
Код в основном просто простая старая реализация пузырьков в Python, с несколькими дополнительными линиями кода для обработки воспроизведения звука для каждой конфигурации музыкальных нот, хранящихся в списке Python.
Я предоставил код ниже в случае, если вы хотите попробовать это для себя. Как вы, вероятно, знаете, Bubble Sort поступает в несколько разных ароматов. Я предоставил две версии, которые оба сортируют данные «Bubling» самое высокое значение в направлении правого конца списка. Разница между версиями состоит в том, что первый продолжает пытаться отсортировать данные, даже когда полный проход был сделан без свопов, а второй использует это последнее состояние как «доказательство», что данные сортируются, и поэтому выходы рано.
Музыкальный пузырь Python Сортировка в C главной версии 1
import musicalbeeps
import random
# notes = ["A", "Bb", "C5", "E5", "F5", "A5"] # Phrygian Pentatonic anyone?
notes = ["C", "D", "E", "F", "G", "A", "B", "C5"]
def play_seq(seq):
for pos in seq:
player.play_note(notes[pos], 0.2)
def bubble_sort(arr):
"""
Returns a list sorted in ascending order. We are assuming an integer list as input
"""
length = len(arr)
for passnum in range(length - 1):
for i in range(length - 1 - passnum):
if arr[i] > arr[i + 1]:
temp = arr[i + 1]
arr[i + 1] = arr[i]
arr[i] = temp
print("After Pass " + str(passnum + 1) + ", inner loop " + str(i + 1) + ":", arr)
play_seq(arr)
player.play_note("pause", 0.4)
player.play_note("pause", 0.8)
return arr
player = musicalbeeps.Player(volume=0.3,
mute_output=True)
initial = list(range(len(notes)))
initial = [0, 1, 3, 2, 4, 5, 6, 7] # Comment as needed
# random.shuffle(initial) # Uncomment as needed
print(bubble_sort(initial))
Музыкальный пузырь Python Сортировать в C главной версии 2
Это версия «ранней выхода», которая часто более эффективна.
import musicalbeeps
import random
# notes = ["A", "Bb", "C5", "E5", "F5", "A5"]
notes = ["C", "D", "E", "F", "G", "A", "B", "C5"]
def play_seq(seq):
for pos in seq:
player.play_note(notes[pos], 0.4)
def bubble_sort(arr):
"""
Returns a list sorted in ascending order. We are assuming an integer list as input
"""
length = len(arr)
passnum = 0
no_swaps = False
while passnum < length - 1 and no_swaps is False:
no_swaps = True
for i in range(length - 1 - passnum):
if arr[i] > arr[i + 1]:
temp = arr[i + 1]
arr[i + 1] = arr[i]
arr[i] = temp
no_swaps = False
print("After Pass " + str(passnum + 1) + ", inner loop " + str(i + 1) + ":", arr)
play_seq(arr)
player.play_note("pause", 0.4)
passnum += 1
player.play_note("pause", 0.4)
return arr
player = musicalbeeps.Player(volume=0.3,
mute_output=True)
initial = list(range(len(notes)))
initial = [0, 1, 3, 2, 4, 5, 6, 7]
# random.shuffle(initial)
print(bubble_sort(initial))
Я рекомендую вам взять этот код в качестве отправной точки для ваших собственных экспериментов. Попробуйте изменить некоторые значения, используя другие заметки и масштабы и т. Д. Может быть адаптировать код для другого алгоритма, как Сортировка вставки.
Быстрое слово о слуховом обучении
Видимо “Вак” был разграблен. То есть никакого убедительного доказательства не было обнаружено, что студенты имеют внутренние различия в их способности учиться через Визуальный против слуховой против кинестетический Модальности. Однако это принципиально разная проблема для того, будет ли обучение через множество средств массовой информации. Это кажется очевидно для меня, и исследование поддерживает его, что представляя субъекту через несколько каналов поможет с первоначальным пониманием и углублением/интеграцией обучения. Кроме того, для учащихся с нарушениями зрения или проблем с нарушением слуха разница в стиле, очевидно, очень значительна.
Так что будьте осторожно, когда вы слышите, что «Vak был разграблен», что вы не принимаете неправильно, что используете Визуальный и слуховой и кинестетический значит учить и учиться – «ненаучно». Возможно, некоторые виды деятельности, вероятно, (или, по крайней мере, кажутся) более подходят для конкретного подхода, чем другие, но я бы никогда не хотел бы быть жестким об этом и подавить педагогическое творчество.
Хорошо, так что это было только для людей, у которых есть оговорки об использовании забавных, инновационных, творческих средств обучения и преподавания, при этом захватывающие перекрестные соединения, которые могут помочь студентам оставаться вовлеченными и мотивированными. Для остальных из вас Если музыка будет едой любви, играть дальше.
Счастливые вычисления!