Алгоритм сортировки строки массива по возрастанию методом прямого выбора может быть представлен так: 1. Просматривая строку массива от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального. 2. Просматривая строку массива от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального. 3. И так далее до предпоследнего элемента.
Решение:
//Pascal const n = 7;
var a: array[1..n, 1..n] of integer; i, j, min, ind: integer;
//Заполнение массива сл. числами и вывод на экран begin for i := 1 to n do begin for j := 1 to n do begin a[i, j] := random(100); write(a[i, j]:4); end; writeln; end;
//Сортировка строки матрицы прямым выбором
for i := 1 to n - 1 do begin min := a[4, i]; ind := i; for j := i + 1 to n do if a[4, j] < min then begin min := a[4, j]; ind := j; end; a[4, ind] := a[4, i]; a[4, i] := min; end; writeln;
//вывод отсортированной строки for j := 1 to n do begin write(a[4, j]:4); end; end.
1) 221₃ = 25₁₀
2) 444₅ = 124₁₀
3) 232₄ = 46₁₀
4) 1000₂ = 8₁₀
Объяснение:
1) 222₃ = 2 * 3² + 2 * 3¹ + 2 * 3⁰ = 2 * 9 + 2 * 3 + 2 * 1 = 18 + 6 + 2 = 26₁₀
222₃
-
1₃
221₃
221₃ = 2 * 3² + 2 * 3¹ + 1 * 3⁰ = 2 * 9 + 2 * 3 + 1 * 1 = 18 + 6 + 1 = 25₁₀
2) 1000₅ = 1 * 5³ + 0 * 5² + 0 * 5¹ + 0 * 5⁰ = 1 * 125 + 0 * 25 + 0 * 5 + 0 * 1 = 125₁₀
1000₅
-
1₅
444₅
1. Занимаем 1 из 1 остаётся 0 (в следующий разряд переносится 10₅)
2. Занимаем 1 из 10 остаётся 4₅ (в следующий разряд переносится 10₅, 10₅ - 1₅ = 4₅)
3. Занимаем 1 из 10 остаётся 4₅ (в следующий разряд переносится 10₅, 10₅ - 1₅ = 4₅)
4. Вычитаем 1 из 10 получаем 4₅ (10₅ - 1₅ = 4₅)
444₅ = 4 * 5² + 4 * 5¹ + 4 * 5⁰ = 4 * 25 + 4 * 5 + 4 * 1 = 100 + 25 + 4 = 124₁₀
3) 233₄ = 2 * 4² + 3 * 4¹ + 3 * 4⁰ = 2 * 16 + 3 * 4 + 3 * 1 = 32 + 12 + 3 = 47₁₀
233₄
-
1₄
232₄
232₄ = 2 * 4² + 3 * 4¹ + 2 * 4⁰ = 2 * 16 + 3 * 4 + 2 * 1 = 32 + 12 + 2 = 46₁₀
4) 1001₂ = 1 * 2³ + 0 * 2² + 0 * 2¹ + 1 * 2⁰ = 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 8 + 1 = 9₁₀
1001₂
-
1₂
1000₂
1000₂ = 1 * 2³ + 0 * 2² + 0 * 2¹ + 0 * 2⁰ = 1 * 8 + 0 * 4 + 0 * 2 + 0 * 1 = 8 + 1 = 8₁₀
1. Просматривая строку массива от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая строку массива от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.
Решение:
//Pascal
const
n = 7;
var
a: array[1..n, 1..n] of integer;
i, j, min, ind: integer;
//Заполнение массива сл. числами и вывод на экран
begin
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] := random(100);
write(a[i, j]:4);
end;
writeln;
end;
//Сортировка строки матрицы прямым выбором
for i := 1 to n - 1 do
begin
min := a[4, i];
ind := i;
for j := i + 1 to n do
if a[4, j] < min then
begin
min := a[4, j];
ind := j;
end;
a[4, ind] := a[4, i];
a[4, i] := min;
end;
writeln;
//вывод отсортированной строки
for j := 1 to n do
begin
write(a[4, j]:4);
end;
end.