回 帖 发 新 帖 刷新版面

主题:替换递归的快速(分组)排序

m% = 16000
DIM SHARED s(m%)
RANDOMIZE TIMER
FOR i% = 1 TO m%
    s(i%) = RND
NEXT

QSort3 1, m%

调用排序

---------------------------------------------------
第一种: 标准的递归形式

SUB QuickSort (l%, h%)
IF l% < h% THEN
  IF h% - l% = 1 THEN
     IF s(l%) > s(h%) THEN SWAP s(l%), s(h%)
  ELSE
     r% = INT(RND * (h% - l% + 1)) + l%
     SWAP s(h%), s(r%)
     p = s(h%)
     i% = l%
     j% = h%
     DO
      DO WHILE (i% < j%) AND (s(i%) <= p)
         i% = i% + 1
      LOOP
      DO WHILE (j% > i%) AND (s(j%) >= p)
         j% = j% - 1
      LOOP
      IF i% < j% THEN SWAP s(i%), s(j%)
     LOOP WHILE i% < j%
     SWAP s(i%), s(h%)
     IF (i% - l%) < (h% - i%) THEN
        QuickSort l%, i% - 1
        QuickSort i% + 1, h%
     ELSE
        QuickSort i% + 1, h%
        QuickSort l%, i% - 1
     END IF
  END IF
END IF
END SUB

回复列表 (共11个回复)

11 楼

你怎么回事?
大半年冒一天就顶两三年前的贴,
没事干啊你?

我来回复

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