回 帖 发 新 帖 刷新版面

主题:排序

谁能用插入排序法和二分法排序?
用键盘输入!
给程序!

回复列表 (共12个回复)

沙发

两分法没听说过,插入法如下:

现是已排好序的10个数,从键盘输入一个数插入排序!

randomize timer 
dim a(11)
for i = 1 to 10
   a(i)=int(rnd*100) ' 产生10个数
next i 

for i = 1 to 9
    for j = i=1 to 10
        if a(i)>a(j) then 
            swap a(i),a(j)   '把这十个数排序

         endif
    next j
next i               
input x              '输入一个数
  for i = 1 to 10
     if x>a(i) then
         t=i         ’查找并记下应插入的位置
         exit for 
      endif 
   next i 
 for i = 10 to t
      a(i+1)=a(i)   '从t以后的数一个一个往后移
   next i 
  a(t)= x            ' 把x 放到t的位置(插入)
 for i = 1 to 11
     print a(i)
  next i 


板凳

插入排序(从小到大)的基本思想是:
对于从第2个元素到最后一个元素中的第i个元素,都在1到i-1个元素之间寻找,如果第i个元素小于这个元素,就把第i个元素插在这里,后面的元素依次后移,如果第i个元素比前面的元素都大,这个元素就不动,继续处理下一个元素。
CLS
INPUT "n=", n
DIM a(n)
FOR i = 1 TO n: INPUT a(i): NEXT i
FOR i = 2 TO n
    s = a(i)
    FOR j = 1 TO i - 1
        IF s < a(j) THEN
           FOR k = i - 1 TO j STEP -1
               a(k + 1) = a(k)
           NEXT k
           a(j) = s
           EXIT FOR
        END IF
    NEXT j
NEXT i
FOR i = 1 TO n: PRINT a(i); : NEXT i: END

3 楼

没有二分法排序,只有二分查找。
二分查找的基本思想是:
对于已经从小到大排序好的数组A(N),要查找X:
(1)设立三个指针:L、R、M,一开始L=1,R=N。
(2)计算M的位置:(L+R)\2。
(3)将X和A(M)比较,可能出现三种情况:
1、X=A(M),证明A(M)就是待查找的数,输出M,结束。
2、X<A(M),证明X在左半部,应调整R到M-1,转(2)
3、X>A(M),证明X在右半部,应调整L到M+1,转(2)
(4)如果出现L>R的情况,说明X不在A(N)中。
程序:
CLS
INPUT x
DATA 2,6,14,21,34,50,57,58,66,87,93,99
DIM a(12)
FOR i = 1 TO 12: READ a(i): NEXT i
l = 1: r = 12
DO
  m = (l + r) \ 2
  IF x = a(m) THEN PRINT m: END
  IF l > r THEN PRINT "Not found.": END
  IF x < a(m) THEN r = m - 1 ELSE l = m + 1
LOOP
END

4 楼

[url=http://www.programfan.com/club/showbbs.asp?id=50824]排序方法的总结与讨论[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=100474]文件排序[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=204741]数组排序,字符串排序[/url]

5 楼


数组排序方法一般就是:插入法,比较排序法,冒泡法
 do you agree with me ???

6 楼

还有希尔排序法!

7 楼

xgf0(1楼)的太长!   

8 楼

长是长,比较容易理解。看的清楚

9 楼


我只是又随机产生个数组。这个可以去掉

10 楼

谁能帮喃用FOXBASE或BASIC写一下希尔排序法的程序?拜托大家了......谢谢

我来回复

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