Сортировка выбором МАХ (или МIN)
Алгоритмы сортировки массива
END
NEXT I
Алгоритм поиска максимального и минимального значений в массиве S(N)
NEXT I
DIM S(N)
INPUT N
RANDOMIZE TIMER
CLS
Алгоритм формирования и печати исходного массива
Оператор RND
NEXT I
NEXT I
DATA 10, 20, 30, 40, 50, 60
NEXT I
Способы ввода значений элементов массива
OPTION BASE 1
Оператор OPTION BASE
Синтаксис:
OPTION BASE {0|1},
Где 0 или 1 - № начального элемента массива.
Пример:
DIM M%(25)
Здесь целочисленный массив М% состоит из 25 элементов, а не из 26.
1. Оператором присваивания
B(1) = 3
B(2) = 5
B(3) = 7
2. Оператором цикла, с клавиатуры
FOR I=1 TO 10
INPUT B(I)
3. Оператором цикла, с применением операторов DATA и READ
FOR I=1 TO 6
READ B(I)
4. При помощи датчика случайных чисел:
FOR I=1 TO 10
B(I) = RND
Это наиболее удобный способ задания массивов при отладке различных примеров обработки элементов массивов. Остановимся на этом способе подробнее.
RND – возвращает случайное число одинарной точности, вырабатываемое датчиком случайных чисел, равномерно распределенных на интервале [0; 1].
Поясним свойства псевдослучайной последовательности.
Чтобы случайные числа не повторялись при повторном обращении к датчику надо применять в начале программы оператор
RANDOMIZE [число].
[Число] –это число, используемое для инициализации генератора случайных чисел. Если оно не указано, то RANDOMIZE его запрашивает. Рекомендуется в качестве такого числа брать показания таймера. В этом случае в программе (до применения оператора RND, обычно в начале программы)следует записать – RANDOMIZE TIMER
Если надо, чтобы вырабатываемые числа лежали в интервале [-N; N], то можно применить выражение
2*N*RND - N
Если надо, чтобы вырабатываемые числа лежали в интервале [0; N], то надо применить выражение
N*RND
Если надо, чтобы вырабатываемые числа лежали в интервале [-N; N-1] и были целыми, то можно применить выражение INT(2*N*RND - N) и т. д.
PRINT “Введите размер массива “;
PRINT “Исходный массив:”
FOR I=0 TO N
S (I) = INT(200*RND - 100)
PRINT S (I),
MAX = S (0): J = 0
MIN = MAX: K = 0
FOR I=1 TO N
IF S (I) > MAX THEN MAX = S (I): J = I
IF S (I) < MIN THEN MIN = S (I): K = I
PRINT “ MAX =”; S (J), “MIN =”; S (K)
Таким образом, максимальный элемент массива - S (J), минимальный - S (K ).
Минимальные и максимальные значения массива можно получить, отсортировав массив. Например, в случае сортировки массива по возрастанию первый элемент массива – минимальный, а последний – максимальный.
Сортировка массива – это упорядочение по возрастанию или убыванию значений его элементов в соответствии с их индексом.
Алгоритм основан на определении и выборе минимального элемента вначале из всего массива, потом – из оставшегося и так последовательно до исчерпания всего массива. Выбираемые элементы вставляются по порядку в начало массива: сначала самый малый, затем минимум, найденный вторым и т. д. В итоге мы получаем отсортированный по возрастанию массив.
Если мы хотим иметь массив, отсортированный по убыванию, то соответственно находим и ставим последовательно в начало массива элементы с максимальными значениями.
FOR I = 1 TO N-1
MIN = S(N)
K=N
FOR J = N TO I STEP –1
IF S(J) < MIN THEN MIN= S(J): K=J