Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмдеу жане багдарламалау негиздери 4 г.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Тақырыбы: Ішкі сұрыптау алгоритміне программа құру.

Тапсырмалар:

1. a1 a2 . . . ап тұтас немесе нақты сандардың кемуі бойынша реттелген массиві берілген делік және b кейбір саны берілген (сәйкесінше тұтас немес нақты), бұл үшін a1, .... ап, сандары арасында b санын осы орынға қойғаннан кейін реттілік бұзылмайтындай орын табу қажет. Егер массивтің кейбір элементтері өзара теңдік нәтижесінде b санын түрлі орындарға қою мүмкін болса, онда массивтің басына жақын орынды анықтау талап етіледі.

2. а1,…,an, b1, …, bm.(a1 а2 . . . аn) нақты сандары берілген. kiа1,…,an (I=1, . . , m) арасында bi орнын іздеу есебінің шешімі болатын k1, ...,km натурал сандар алу.

3. Ақшалай лотерея ұтысының кестесі ұтқан нөмірлердің массивімен а1,…,an және рубльмен ұтқан массивпен р1 , . . ., рп i—ai (i= 1, ...,n) нөміріне түскен ұтыс) берілген. b1, ..., bm нөмірлі билеттерге түскен қосынды ұтысты анықтау. Тең бөлу алгоритмін қолдану.

4. Пусть место некоторого числа b кейбір санының орны среди упорядочен­ных по неубыванию ai, ..., ап кемімеуі бойынша реттелгендер арасында кемімеуі бойынша реттілікті бұзбай осы санды қою мүмкін болатын тізбектің басынан барынша қашықтатылған орын ретінде таңдалады. выбирается как наиболее удаленное от начала последовательности место, на которое можно вставить это число, не нарушая этим упорядочен­ности по неубыванию.

әдебиет:

1. Негізгі –5, 6, 8, 9, 10

2. Қосымша - 2

Әдістемелік нұсқау:

Задача №1называется задачей поиска места элемента. Для b имеется, n + 1 возможность: b a1, a1<b a2, ..., an-1<b an, ап<b и решением задачи поиска места элемента b будет соответ­ственно одно из чисел 1, . . ., п+ 1. Для решения задачи полезен алгоритм, который называется алгоритмом деления пополам: взять первоначально 1 и n+ 1 в качестве границ поиска места элемента; далее, до тех пор, пока границы не совпадут, шаг за шагом сдвигать эти границы следую­щим образом: сравнить b с as, где s— целая часть среднего арифметического границ; если as < b, то заменить прежнюю нижнюю границу на s+ 1, а верхнюю оставить без изме­нения, иначе оставить без изменения нижнюю границу, а верхнюю заменить на s; когда границы совпадут, став равными некоторому числу t, вынолнение вышеописан­ного алгоритма закончится с результатом t. (Число сравнений, требуемых этим алгоритмом, не превосходит [log2(n+1)]+1.)

К задаче №2 применить алгоритм деления пооплам.

При решении Тапсырмалар №4 внести изменение в описание алго­ритма деления пополам и соответственно дать новое реше­ние Тапсырмалар №1 сформулированного выше.

25-26 жұмыс

Тақырыбы: Сұрыптау алгоритмі

Тапсырмалар:

Алгоритм фон Неймана упорядочения массива а1, ..., ап по неубыванию (алгоритм сортировки слияниями) основан на многократных слияниях уже упорядоченных групп элементов массива. Вначале весь массив рассматривается как совокупность упорядо­ченных групп по одному элементу в каждом. Слиянием соседних групп получаем упорядоченные группы, каждая из которых содержит два элемента (кроме, может быть, последней группы, которой не нашлось парной). Далее, упорядоченные группы укрупняются тем же способом и т. д.

Написать программу, реализующую алгоритм фон Ней­мана.

Пусть дан массив a1, ..., ап. Требуется переста­вить ai, ..., ап так, чтобы вначале в массиве шла группа элементов, больших того элемента, который в исходном массиве располагался на первом месте, затем—сам этот элемент, потом—группа элементов, меньших или равных ему. Число сравнений и перемещений, каждое в отдель­ности, не должно превышать п—1

На преобразовании массива, описанном в зада­че 2, основывается также следующий алгоритм поиска значения k-го по величине элемента массива a1, ..., ап (т. е. того элемента, который бы занял место с номером k после упорядочения массива). Пусть в результате пре­образования, описанного в задаче 2, первый элемент занял р-е место; если k = p, то поиск закончен; если k < р, то надо перейти к поиску k-ro по величине элемента в на­чальной группе элементов, содержащей р—1 элемент (за­дача упростилась, так как р— 1 < n); если же k > р, то надо перейти к поиску (kp)- го по величине элемента во второй группе элементов (задача упростилась, так как п—р< < п). Написать программу, реализующую этот алго­ритм.

Пусть слова, которые можно выделить в массиве символов a1, ..., ап, требуется переставить в лексикографическом порядке. Так как раз­ные слова могут иметь разную длину, то без больших затруд­нений можно менять местами только слова, стоящие рядом. Написать программу, предполагая, что длина слова не превосходит пятнадцати.

әдебиет:

1. Негізгі –5, 6, 8, 9, 10

2. Қосымша - 2

Әдістемелік нұсқау:

В задании №1 приходится оперировать не только с массивом а1, ..., ап, но и с вспомогательным массивом b1, ..., bn (первоначальные значения его элементов не играют роли).

Рис.1.

Рис. 1 демонстрирует два последовательных этапа укруп­нения: массивы а1 ..., ап и b1, ..., bn представлены в виде отрезков, которые разбиты на части, изображающие упорядоченные группы. Число упорядоченных групп убы­вает, следовательно, настанет такой момент, когда в мас­сиве а1, ..., ап или b1, ..., bn будет содержаться только одна упорядоченная группа. А это означает, что массив упорядочен. Для слияния двух упорядоченных групп, со­держащих соответственно р и q элементов, достаточно произвести не более p + q сравнений. Следовательно, для одного этапа укрупнения достаточно произвести не более п сравнений. Столько же требуется на одном этапе и пе­ремещений. Можно показать, что алгоритм фон Неймана требует в целом приблизительно п log2 п сравнений и столько же перемещений. Из рассмотренных до сих пор алгоритмов только алгоритм сортировки бинарными вставками требо­вал столь небольшого числа сравнений. Однако алгоритм фон Неймана выгодно отличается от последнего алгоритма тем, что требует меньше перемещений элементов а1,...,ап (хотя и требует дополнительного массива bi, ..., bn).

В задании №3 алгоритм не содержит рекурсий.

Задача №4 не является, конечно, задачей сортировки массива, но тем не менее алгоритм сортировки обменами оказывается здесь полезным. Алгоритм сортировки обменами и предписывает только такие обмены.

27-28 жұмыс