八年级信息技术教案:数组(3)
END
(2)、数据排序
例:从键盘输入10个数。要求按由小到大的顺序将它们打印出来;
• 比较交换法
a1、a2、a3、a4、a5、a6、a7、a8、a9、a10
第一次:a1与a2、a3、a4、a5、a6、a7、a8、a9、a10比较
第二次:a2与a3、a4、a5、a6、a7、a8、a9、a10比较
第三次:a3与a4、a5、a6、a7、a8、a9、a10比较
第四次:a4与a5、a6、a7、a8、a9、a10比较
第五次:a5与a6、a7、a8、a9、a10比较
第六次:a6与a7、a8、a9、a10比较
第七次:a7与a8、a9、a10比较
第八次:a8与a9、a10比较
第九次:a9与a10比较
OPTION BASE 1
DIM a(10)
FOR i=1 TO 10
INPUT a(i)
NEXT i
FOR i=1 TO 9
FOR j=i+1 TO 10
if a(i)>a(j) THEN SWAP a(i),a(j)
NEXT j
NEXT i
FOR i=1 TO 10
PRINT a(i);
NEXT i
END
6. 选择法
OPTION BASE 1
DIM a(10)
FOR i=1 TO 10
INPUT a(i)
NEXT i
FOR i=1 TO 9
k=i
FOR j=i+1 TO 10
if a(k)>a(j) THEN k=j
NEXT j
if k<>i THEN SWAP a(k),a(i)
NEXT i
FOR i=1 TO 10
PRINT a(i);
NEXT i
END (3).数据查找(检索) 例: 设有n个学生,每个学生的数据包括:学号、姓名、性别、年龄、平均分等;要求输入一个学号,程序输出该学生的所有数据。
• 顺序查找法
假设:num(i)为学生学号,nam$(i)为姓名,num为查找对象。 SUB Search
FOR i=1 TO n
IF num=num(i) THEN
PRINT "num";num(i)
PRINT "name";nam$(i)
EXIT FOR
END IF
NEXT i
IF i>n THEN num ;"not found"
END SUB
• 折半查找法(二分查找法);
对按一定规律(由小到大或由大到小)排列好的数据进行检索;假设:num(i)为按从小到大排列的学生学号,nam$(i)为姓名,num为查找对象。
SUB Search
top=1
bot=n
find=0
DO
mid=INT((top+bot)/2)
IF num=num(mid) THEN
PRINT "num";num(i)
PRINT "name";nam$(i)
find=1
ELSEIF num
bot=mid-1
ELSEIF num>num(mid) THEN
top=mid+1
END IF
LOOP UNTIL ((bot
IF find=0 THEN num ;"not found"
END SUB
2、二维数组
矩阵的表示:
aij——双下标变量 a(i,j)→二维数组
数组定义:DIM A(m,n)
a(i,j)→b(j,i)
例: 输出魔阵——每行、每列和对角线之和均相等。
排列规律:
(1)、先将“1”放在第一行当中;
(2)、从“2”开始到N*N止,各数中每一个数存放的行比前一个数的行数减1,列数加1;
(3)、如果上一个数的行数为1,则下一个数的行数为n(最后一行);