Слияние упорядоченных и бинарный поиск в упорядоченном массиве
№11. Слияние двух упорядоченных в один упорядоченный
// a,b упорядочены по возрастанию function Merge(a,b: array of real; na,nb: integer): array of real; begin Assert((0 na) and (na a.Length)); Assert((0 nb) and (nb b.Length)); a[na] := real.MaxValue; b[nb] := real.MaxValue; var c := new real[na + nb]; var ia := 0; var ib := 0; for var ic := 0 to na + nb — 1 do if a[ia]b[ib] then begin c[ic] := a[ia]; ia += 1; end else begin c[ic] := b[ib]; ib += 1; end; Result := c; end;
№12.
Поиск в упорядоченном массиве
function BinarySearch(a: array of integer; x: integer): integer; begin var k: integer; var i := 0; var j := a.Length-1; repeat k := (i+j) div 2; if x>a[k] then i := k + 1 else j := k — 1; until (a[k]=x) or (i>j); if a[k]=x then Result := k else Result := -1; end;
Сортировка массивов
№13. Сортировка выбором
procedure SortByChoice(a: array of integer); begin for var i := 0 to a.Length — 2 do begin var min := a[i]; var imin := i; for var j := i + 1 to a.Length — 1 do if a[j] min then begin min := a[j]; imin := j; end; a[imin] := a[i]; a[i] := min; end; end;
№14.
Задача на массивы. Программирование на Java. Алгоритмическая качалка с Валерой Петровым
Пузырьковая сортировка
Способ №1
procedure BubbleSort(a: array of integer); begin var n := a.Length; for var i := 0 to n — 2 do for var j := n — 1 downto i + 1 do if a[j] a[j — 1] then Swap(a[j], a[j — 1]); end;
Способ №2(оптимизация)
procedure BubbleSort2(a: array of integer); begin var i := a.Length — 1; var q: boolean; repeat q := true; for var j := 0 to i — 1 do if a[j + 1] a[j] then begin Swap(a[j + 1], a[j]); q := false; end; i -= 1; until q; end;
№15. Сортировка вставками
procedure SortByInsert(a: array of integer); begin for var i := 1 to a.Length — 1 do begin var x := a[i]; var j := i — 1; while (j >= 0) and (x a[j]) do begin a[j + 1] := a[j]; j -= 1; end; a[j + 1] := x; end; end;
Использование процедурных типов в задачах на массивы
Пусть сделаны следующие описания:
type IPredicate = function(x: integer): boolean; // Примеры предикатов function Even(x: integer): boolean; begin result := not odd(x); end; function IsPositive(x: integer): boolean; begin Result := x > 0; end;
№16.
Поиск по условию
function FindPred(a: array of integer; pred: IPredicate): integer; begin var n := a.Length; var i := 0; while (i n) and not pred(a[i]) do i += 1; if i = n then Result := -1 else Result := i; end;
№17. Количество по условию
function CountPredT>(a: array of T; pred: T -> boolean): integer; begin Result := 0; for var i := 0 to a.Length — 1 do if pred(a[i]) then Result += 1; end;
№18.
Условный минимум
procedure MinElemPred(a: array of integer; pred: IPredicate; var min, imin: integer); begin min := Integer.MaxValue; imin := -1; for var i := 0 to a.length — 1 do if pred(a[i]) and (a[i] min) then begin min := a[i]; imin := i; end; end;
№19. Удаление по условию
procedure DeleteAll(a: array of integer; var n: integer; pred: IPredicate); begin Assert((0 n) and (n a.Length)); var j := 0; for var i := 0 to n — 1 do if not pred(a[i]) then begin a[j] := a[i]; j += 1; end; n := j; end;
Решение задач на массивы в языке c++ | Практика на c++ урок 1.
Источник: pascalabc.net
Решение задач на массивы. Язык Паскаль
Массив представляет собой сложный тип данных, включающий список значений, принадлежащих одному типу. В Pascal можно задавать как одномерные, так и двумерные массивы. Здесь представлены задачи различных уровней сложности на одномерные массивы.
- Сумма и произведение элементов одномерного массива
- Сумма положительных элементов массива
- Сумма элементов частей массива
- Первый положительный элемент массива
- Поиск максимального элемента в массиве
- Максимальный по модулю элемент массива
- Найти два максимальных элемента массива
- Заменить элементы массива на противоположные
- Разделить элементы массива на максимальный
- Найти разность между максимальным и минимальным элементами массива
- Поменять местами минимальный и максимальный элементы массива
- Найти количество положительных элементов массива
- Количества отрицательных и положительных элементов в массиве
- Вывести элементы массива, которые больше среднего арифметического
- Элементы массива, которые больше предыдущего
- Определить индексы элементов массива, значение которых лежит в указанном пределе
- Самая длинная последовательность, состоящая из одинаковых элементов
- Есть ли в массиве одинаковые элементы
- Вставка элемента в массив
- Удаление элементов одномерного массива
- Удалить повторяющиеся элементы из массива
- Слияние двух упорядоченных массивов
- Сортировка выбором
- Сортировка методом пузырька
- Вывести в порядке возрастания цифры, из которых состоит число
- Номер дня с начала года
Источник: pas1.ru
Задачи на массивы
Абсолютное значение каждого нового числа перед помещением в массив надо сравнить с абсолютными значениями всех чисел, которые уже были добавлены в массив.
Задачи средней сложности
8 сентября 2021 0 18.8к. admin
В одномерном массиве найти сумму элементов, находящихся между минимальным и максимальным элементами. Сами минимальный и максимальный элементы в сумму не включать.
Задачи средней сложности
8 сентября 2021 1 4.8к. admin
Каждое элемент-число массива следует разбить на цифры. Сделать это можно с помощью последовательного нахождения остатка от деления числа на 10 нацело
Одномерные массивы
8 сентября 2021 0 5.8к. admin
Если стоит задача найти минимальный (или максимальный) элемент по модулю, то значит при поиске нужно сравнивать не сами элементы массива, а их абсолютные
Задачи средней сложности
8 сентября 2021 1 4.7к. admin
Поиск первого отрицательного: Сначала находим первый отрицательный элемент и запоминаем его индекс (например, в переменной neg). На случай, если в массиве
Одномерные массивы
8 сентября 2021 0 5.8к. admin
Если очередной элемент массива отрицателен, то все элементы следующие за ним надо передвинуть на одну ячейку вперед. В результате отрицательный элемент
Одномерные массивы
8 сентября 2021 0 4.6к. admin
Задачу можно разбить на три подзадачи: Удаление элементов массива, принадлежащих заданному интервалу. Сдвиг оставшихся элементов. Заполнение «
Одномерные массивы
8 сентября 2021 0 1.5к. admin
Используя сортировку выбором отсортировать элементы массива по возрастанию. Сортировка выбором заключается в поиске в каждом проходе по массиву максимального
Задачи средней сложности
8 сентября 2021 0 3.1к. admin
Случайные числа в диапазоне от -5 до 5 разложить по двум массивам: в одни помещать только положительные, во второй — только отрицательные.
Одномерные массивы
8 сентября 2021 0 2.8к. admin
Заполнить один массив случайными числами, другой — введенными с клавиатуры числами, в ячейки третьего записать суммы соответствующих ячеек первых двух.
Источник: gospodaretsva.com