主题:排序
wzc1996
[专家分:1680] 发布于 2007-05-01 20:55:00
谁能用插入排序法和二分法排序?
用键盘输入!
给程序!
回复列表 (共12个回复)
沙发
xgf0 [专家分:60] 发布于 2007-05-01 21:23:00
两分法没听说过,插入法如下:
现是已排好序的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
板凳
Matodied [专家分:7560] 发布于 2007-05-01 21:30:00
插入排序(从小到大)的基本思想是:
对于从第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 楼
Matodied [专家分:7560] 发布于 2007-05-01 21:44:00
没有二分法排序,只有二分查找。
二分查找的基本思想是:
对于已经从小到大排序好的数组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 楼
moz [专家分:37620] 发布于 2007-05-02 10:54:00
[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 楼
xgf0 [专家分:60] 发布于 2007-05-02 12:26:00
数组排序方法一般就是:插入法,比较排序法,冒泡法
do you agree with me ???
6 楼
wzc1996 [专家分:1680] 发布于 2007-05-02 21:02:00
还有希尔排序法!
7 楼
wzc1996 [专家分:1680] 发布于 2007-05-02 21:04:00
xgf0(1楼)的太长!
8 楼
xgf0 [专家分:60] 发布于 2007-05-02 21:37:00
长是长,比较容易理解。看的清楚
9 楼
xgf0 [专家分:60] 发布于 2007-05-02 21:38:00
我只是又随机产生个数组。这个可以去掉
10 楼
学的都晕了 [专家分:0] 发布于 2008-02-04 09:05:00
谁能帮喃用FOXBASE或BASIC写一下希尔排序法的程序?拜托大家了......谢谢
我来回复