回 帖 发 新 帖 刷新版面

主题:省级比赛第二题--times

题目意思是给你n个时间段,按时间先后顺序排序。

原程序:

CLS
OPEN "times.in" FOR INPUT AS #1
OPEN "times.out" FOR OUTPUT AS #2
INPUT #1, n
DIM a$(n)
FOR i = 1 TO n
 INPUT #1, a$(i)
NEXT i
FOR i = 1 TO n - 1
 FOR j = i + 1 TO n
 IF a$(i) > a$(j) THEN SWAP a$(i), a$(j)
 NEXT j
NEXT i
FOR i = 1 TO n
 PRINT #2, a$(i)
NEXT i
END


因为输入的是时间,不需要数转串,直接用字符串比较即可。

回复列表 (共11个回复)

11 楼

快速排序:
DECLARE SUB Qsort (left!, right!)
CLS
INPUT n
DIM SHARED x(n)
FOR i = 1 TO n
  INPUT a, b, c
  x(i) = 10000 * a + 100 * b + c
NEXT i
Qsort 1, n
FOR i = 1 TO n
  PRINT x(i) \ 10000; x(i) \ 100 MOD 100; x(i) MOD 100
NEXT i
END

SUB Qsort (left!, right!)
  i = left
  j = right
  DO WHILE i <> j
    DO WHILE x(i) < x(j)
      j = j - 1
    LOOP
    IF i < j THEN
      SWAP x(i), x(j)
      i = i + 1
      DO WHILE x(i) < x(j)
        i = i + 1
      LOOP
      IF i < j THEN SWAP x(i), x(j): j = j - 1
    END IF
  LOOP
  IF i > left THEN i = i - 1: Qsort left, i
  IF j < right THEN j = j + 1: Qsort j, right
END SUB

我来回复

您尚未登录,请登录后再回复。点此登录或注册