Считаем, что вначале данные неупорядочены. Полагаем, что первый элемент находится на своем месте, поэтому граница между отсортированными и неотсортированными элементами находится после первого элемента. На каждом шаге, начиная от границы, ищем максимальный элемент и определяем его место в отсортированной части последовательности, после чего сдвигаем необходимую часть отсортированных элементов вправо и производим вставку элемента на освободившееся место. Алгоритм выполняем до тех пор, пока не граница отсортированных данных не выйдет за границу массива.
PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018Внимание! Если программа не работает, обновите версию!procedure SortByInsert(a: array of real);
// сортировка простыми вставками
begin
for var Граница := 1 to a.Length - 1 do
if a[Граница - 1] < a[Граница] then
begin
// сдвиг вправо
var (Элемент, Позиция) := (a[Граница], Граница - 1);
while (Позиция >= 0) and (a[Позиция] < Элемент) do
(a[Позиция + 1], Позиция) := (a[Позиция], Позиция - 1);
// вставка на нужное место
a[Позиция + 1] := Элемент
end
end;
begin
var a := ReadArrReal(8);
SortByInsert(a); a.Println
end.
Пример2.9 -25 8.1 31.9 -30.9 20.9 47.6 6.647.6 31.9 20.9 8.1 6.6 2.9 -25 -30.9Поделитесь своими знаниями, ответьте на вопрос:
Распределить по увеличению 5 бит, 15 байт, 1024 килобайт, 1024 мегабайт, 15 кигобайт?
Исходя из этого имеем (приведём всё к битам):
1) 5 бит
2) 15 байт = 15*8 бит = 120 бит
3) 1024 килобайт = 1024*1024 байт = 1048576 байт = 1048576 * 8 бит = 8388608 бит
4) 1024 мегабайт = 1024*1024*1024*8 бит = 8589934592 бит
5) 15 килобайт = 15*1024*8 бит = 122880 бит
Таким образом:
5 бит → 15 байт → 15 килобайт → 1024 килобайт → 1024 мегабайт
(хотя здесь и вычислять ничего не нужно - всё итак очевидно и без расчётов)