Задача: Вычисление медианы заданной выборки
Исходник: Вычисление медианы заданной выборки #2, язык: C [code #109, hits: 7623]
автор: - [добавлен: 27.04.2006]
  1. /* bs03r1.f -- translated by f2c (version 20000817).
  2. You must link the resulting object file with the libraries:
  3. -lf2c -lm (in that order)
  4. */
  5.  
  6. #include "f2c.h"
  7.  
  8. /* Subroutine */ int bs03r1_c(integer *n, real *ra)
  9. {
  10. static integer i__, j, l, ir;
  11. static real rra;
  12.  
  13. /* Parameter adjustments */
  14. --ra;
  15.  
  16. /* Function Body */
  17. l = *n / 2 + 1;
  18. ir = *n;
  19. L10:
  20. if (l <= 1) {
  21. goto L51;
  22. }
  23. --l;
  24. rra = ra[l];
  25. goto L52;
  26. L51:
  27. rra = ra[ir];
  28. ra[ir] = ra[1];
  29. --ir;
  30. if (ir != 1) {
  31. goto L52;
  32. }
  33. ra[1] = rra;
  34. return 0;
  35. L52:
  36. i__ = l;
  37. j = l + l;
  38. L20:
  39. if (j > ir) {
  40. goto L55;
  41. }
  42. if (j < ir && ra[j] < ra[j + 1]) {
  43. ++j;
  44. }
  45. if (rra >= ra[j]) {
  46. goto L53;
  47. }
  48. ra[i__] = ra[j];
  49. i__ = j;
  50. j += j;
  51. goto L54;
  52. L53:
  53. j = ir + 1;
  54. L54:
  55. goto L20;
  56. L55:
  57. ra[i__] = rra;
  58. goto L10;
  59. } /* bs03r1_c */
  60.  
Совсем непонятный алгоритм с использованием такого опасного оператора как GOTO

Найдено на http://www.srcc.msu.su/

+добавить реализацию