Алгоритм сортировки
массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая массив
от первого элемента, найти минимальный элемент и поместить его на место первого
элемента, а первый — на место минимального.
2. Просматривая массив
от второго элемента, найти минимальный элемент и поместить его на место второго
элемента, а второй — на место минимального.
3. И так далее до предпоследнего
элемента.
Ниже представлена программа
сортировки массива целых чисел по возрастанию, диалоговое окно которой изображено
на рис. 5.15.
Рис. 5.15.
Диалоговое окно программы сортировки массива простым выбором
Процедура сортировки,
текст которой приведен в листинге 5.9, запускается нажатием кнопки Сортировка
(Button1). Значения элементов массива вводятся из ячеек компонента StringGrid1.
После выполнения очередного цикла поиска минимального элемента в части массива
процедура выводит массив в поле метки (Label2).
Листинг 5.9.
Сортировка массива простым выбором
procedure TForm1.ButtonlClick(Sender: TObject);
const
SIZE=10;
var
a:array[1..SIZE]
of integer;
min:integer;
{ номер минимального элемента в части
массива от i до верхней границы массива }
j:integer; { номер элемента, сравниваемого с минимальным }
buf:integer; { буфер, используемый при обмене элементов массива }
i,k:integer;
begin
// ввод массива
for
i:=l to SIZE do
a[i]:=StrToInt(StringGridl.Cells[i-1,0])
; Iabel2.caption:='';
for
i:=l to SIZE-1 do begin
{ поиск минимального элемента в части массива от а[1] до a[SIZE]} min:=i;
for
j:=i+l to SIZE do if a[j] < a [min]
then
min:=j;
{ поменяем местами a [min] и a[i] }
buf:=a[i];
a[i]:=a[min]; a[min]:=buf;
{ вывод массива }
for
k:=l to SIZE do
Label2.caption:=label2.caption+' '+IntTostr(a[k]);
Label2.caption:=label2.caption+#13;
end;
Label2.caption:=label2.caption+#13+'MaccMB отсортирован.';
end;
На рис. 5.16 приведено
диалоговое окно программы после завершения процесса сортировки.
Рис. 5.16. Диалоговое окно программы Сортировка массива
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.