home *** CD-ROM | disk | FTP | other *** search
/ The CIA World Factbook 1992 / k3bimage.iso / sel / 12 / 0022 / heapsort.bas (.txt) next >
Encoding:
GW-BASIC  |  1991-12-02  |  2.0 KB  |  80 lines

  1. 100  CLEAR 5000
  2. 110  CLS               ' Sort Program     Heap Sort
  3. 120  DIM N(150),C$(150)
  4. 130  PRINT"type  C  for character string sort"
  5. 140  PRINT"Type  N  for numer sort"
  6. 150  INPUT W$
  7. 160  N=0:PRINT:PRINT
  8. 170  IF W$="n" THEN 480                  ' Goto to Number sort
  9. 180  IF W$<>"c" THEN 130
  10. 190  REM====================  Begin Character Sort
  11. 200  GOSUB 720 : INPUT S$
  12. 210  N=N+1
  13. 220  INPUT C$(N)
  14. 230  IF C$(N)<>S$ THEN 210
  15. 240  N=N-1:PRINT
  16. 250  L=INT(N/2)+1
  17. 260  N1=N
  18. 270  IF L=1 THEN 310
  19. 280  L=L-1
  20. 290  A$=C$(L)
  21. 300  GOTO 350
  22. 310  A$=C$(N1)
  23. 320  C$(N1)=C$(1)
  24. 330  N1=N1-1
  25. 340  IF N1=1 THEN 440
  26. 350  J=L
  27. 360  I=J
  28. 370  J=2*J
  29. 380  IF J=N1 THEN 400
  30. 390  IF J>N1 THEN 420
  31. 392  IF C$(J)=>C$(J+1) THEN 400
  32. 396  J=J+1
  33. 400  IF A$=>C$(J) THEN 420
  34. 410  C$(I)=C$(J)
  35. 415  GOTO 360
  36. 420  C$(I)=A$
  37. 425  GOTO 270
  38. 440  C$(1)=A$
  39. 450  FOR I=1 TO N
  40. 453     PRINT C$(I)
  41. 456  NEXT I
  42. 460  GOTO 130
  43. 470  REM ================  Start of numeric sort
  44. 480  GOSUB 720
  45. 483  INPUT S
  46. 486  PRINT
  47. 490  N=N+1
  48. 493  INPUT N(N)
  49. 496  IF N(N)<>S THEN 490
  50. 500  N=N-1
  51. 505  PRINT
  52. 520  L=INT(N/2)+1
  53. 525  N1=N
  54. 530  IF L=1 THEN 550
  55. 540  L=L-1
  56. 543  A=N(L)
  57. 546  GOTO 590
  58. 550  A=N(N1)
  59. 555  N(N1)=N(1)
  60. 560  N1=N1-1
  61. 570  IF N1=1 THEN 680
  62. 590  J= L
  63. 600  I=J
  64. 605  J=2*J
  65. 610  IF J=N1 THEN 640
  66. 620  IF J>N1 THEN 660
  67. 630  IF N(J)<N(J+1) THEN J=J+1
  68. 640  IF A>N(J) THEN 660
  69. 650  N(I) = N(J)
  70. 655  GOTO 600
  71. 660  N(I)=A
  72. 665  GOTO 530
  73. 680  N(1)=A
  74. 690  FOR I=1 TO N
  75. 693    PRINT N(I)
  76. 696  NEXT I
  77. 700  GOTO 130
  78. 720  PRINT"Enter a stop code to indicate the end of list"
  79. 740  RETURN
  80.