fork download
  1. {
  2. Задача/Task:
  3. - Сортировка Шелла / Shell Sort
  4. Решение/Solution:
  5. - автор/author : Дмитрий С. Кузнецов
  6. - на основе / based on : wikipedia.org
  7. - цена / price : $0
  8. }
  9. program ShellSort(INPUT, OUTPUT);
  10. type
  11. index = integer;
  12. item = integer;
  13.  
  14. const
  15. max = 34 + 1;
  16. var
  17. last, j, step, i, delta : index;
  18. x : item;
  19. h : array[1..max] of item;
  20. begin
  21.  
  22. { input }
  23. for i := 1 to max do
  24. readln(h[i]);
  25.  
  26. { sorting }
  27. last := max;
  28. step := max div 2;
  29. while step > 0 do
  30. begin
  31. for i := step to last do
  32. begin
  33. j := i;
  34. delta := j - step;
  35. while (delta > 0) and (h[delta] > h[j]) do
  36. begin
  37. x := h[delta];
  38. h[delta] := h[j];
  39. h[j] := x;
  40.  
  41. j := delta;
  42. delta := j - step;
  43. end;
  44. end;
  45. step := step div 2;
  46. end;
  47.  
  48. { output }
  49. writeln('Номер':12, 'Значение':20);
  50. writeln('------------------------');
  51. for i := 1 to max do
  52. writeln(' : ', i:2, ' : ', h[i]:9, ' :');
  53.  
  54. end.
  55.  
Success #stdin #stdout 0s 5324KB
stdin
10001
7439
2234
-23
-343
90
-87
943
-3444
-965
394
8439
2334
-2345
-343
623
984
1236
043
0
-10001
-678
555
434
-534
-342
226
2227
888
9990
1000
1010
1919
8989
-2026
stdout
  Номер    Значение
------------------------
 :  1 :    -10001 :
 :  2 :     -3444 :
 :  3 :     -2345 :
 :  4 :     -2026 :
 :  5 :      -965 :
 :  6 :      -678 :
 :  7 :      -534 :
 :  8 :      -343 :
 :  9 :      -343 :
 : 10 :      -342 :
 : 11 :       -87 :
 : 12 :       -23 :
 : 13 :         0 :
 : 14 :        43 :
 : 15 :        90 :
 : 16 :       226 :
 : 17 :       394 :
 : 18 :       434 :
 : 19 :       555 :
 : 20 :       623 :
 : 21 :       888 :
 : 22 :       943 :
 : 23 :       984 :
 : 24 :      1000 :
 : 25 :      1010 :
 : 26 :      1236 :
 : 27 :      1919 :
 : 28 :      2227 :
 : 29 :      2234 :
 : 30 :      2334 :
 : 31 :      7439 :
 : 32 :      8439 :
 : 33 :      8989 :
 : 34 :      9990 :
 : 35 :     10001 :