Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. {Программа сортировки массива вставками по возрастанию (неубыванию) элементов}
  2. const N=10; {размерность массива}
  3. type Element = integer; {"заглушка" определения типа элемента массива}
  4. {при работе со структурированными данными }
  5. {(записями) тип переопределяется }
  6. Arr = array [0..N] of Element; {тип для определения массива, }
  7. {элементы которогоупорядочиваются}
  8. var A: Arr; {массив, элементы которого упорядочиваются }
  9. {Вспомогательные переменные, используемые при сортировке: }
  10. i, j: integer;
  11. x: Element;
  12.  
  13. function Key(b: Element): integer;
  14. {Заглучшка функции вычисления ключа элемента массива}
  15. begin
  16. Key := b {возвращает для массива чисел само значение числа}
  17. end;
  18.  
  19. begin
  20. writeln('Введите элементы массива:');
  21. for i:=1 to N do
  22. readln(A[i]);
  23.  
  24. for i:=2 to N do
  25. begin
  26. {Фиксируем первый элемент в неотсортированной части, }
  27. {который будет включен в отсортированную часть: }
  28. x:=A[i];
  29. {Ищем позицию для включения элемента в отсортированную часть: }
  30. A[0] := x;{занесли в барьерный элемент перемещаемое значение}
  31. j := i-1; {поиск начинаем с элемента, предшествующего выбранному }
  32. {для вставки элементу, - с последнего элемента массива }
  33. {в его отсортированной части }
  34. {Перебираем в поисках места для вставки элементы отсортированной части, }
  35. {причём, пока позиция не найдена, элементы с большими ключами смещаются:}
  36. while Key(x) < Key(A[j]) do {сравниваем ключи для определения, найдена }
  37. {ли позиция, если да, выходим из цикла, }
  38. {нет - смещаемся к предшествующему элементу}
  39. begin
  40. A[j+1] := A[j];{"Выдавливаем" элементы массива на освобождаемое - }
  41. j := j-1 { место - раздвигаем отсортированную часть }
  42. end;
  43. {Включаем элемент в отсортированную часть на найденную позицию: }
  44. A[j+1] := x
  45. end;
  46.  
  47. writeln('Отсортированный массив:');
  48. for i:=1 to N do
  49. writeln(A[i]);
  50. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement