free pascal大师们那个能仔细教我一下数组的含义啊???

例如一题中有这样的循环:vara:array[1..10]oflongint;i,j,t:longint;beginfori:=1to9doforj:=i+1to10do... 例如一题中有这样的循环:
var
a:array[1..10] of longint;
i,j,t:longint;
begin
for i:=1 to 9 do
for j:=i+1 to 10 do
if a[i]<a[j] then
begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
end;
for i:=1 to 10 do
write(a[i]);
end.
这个是大小排序的主体,但是我不明白的是,假如当i=1时,那么j=2那a[i]是小于a[j]但是为什么就交换啊?这样子的话a[i]:=a[j]那a[i]岂不就是更大了?能不能仔细讲解一下这题???本人愚笨,请多包含。。
还有我觉得会不会是我想错了,可能是不是[i]要循环9次,而[j]要循环i+1到10次啊?可以在跟我说一下数组有什么好处和涵义吗????谢谢了!!
展开
 我来答
jaxxcyhc3bea9
推荐于2016-05-25 · TA获得超过8857个赞
知道大有可为答主
回答量:4564
采纳率:75%
帮助的人:1266万
展开全部

数组就是一串带有编号(即下标)的变量组合。

这个排序程序里,数组中共有10个变量:a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,每个变量中存储的数大小是无规律的,不妨依次假定为3,10,4,1,6,76,53,25,6,8。

(本程序中你少写了一开始给数组中的每个变量赋值的语句,所以按你的程序,输出的全是0。因为数组一开始定义时就默认变量值为0,这样的程序是没有意义的。稍后我把修改过的程序写出来。)


外圈循环变量i,从1扫描到9;内圈循环变量j,从i+1扫描到10。这是什么意思呢?举例说明最好理解:

当i=1时,j从2扫到10。a[i]就是a1=3,a[j]分别是a2=10,a3=4,a4=1,a5=6,......a10=8。

这时程序要将a1的值依次与a2~a10进行比较,如果发现a[j]中有比a[i]大的数,就进行位置交换。一路扫描到队尾,最终a[i]即a1中就是整个队列中最大的数。


当i=2时,j从3扫到10。a[i]就是a2=3,a[j]分别是a3=4,a4=1,a5=6,......a10=8。

这时程序要将a2的值依次与a3~a10进行比较,如果发现a[j]中有比a[i]大的数,就进行位置交换。一路扫描到队尾,最终a[i]即a2中是整个队列中次大的数。


不妨打个比方,10个高矮不齐的学生站成一队,老师在旁边,首先指定第一个位置a1,然后将a2~a10位置上的人逐个跟a1比较,发现有比a1高的人,就命令两人交换一下位置。这下一路下来,肯定是最高个的人站在了a1上是不是?


比完第一轮,接着指定a2位置,老师将a3~a10位置上的每个人逐个跟a2比较,有比a2高的就交换位置。比完后,次高个的人就站在a2位置上了。

.......


以次类推。


外圈循环变量i负责指定每次排“队头”的那个位置,内圈循环变量j负责将后续队列中的每个数取出来,以便与“队头”的数比较。(注意这里说的“队头”不是整个队列的第一位,而是特指每一轮扫描时未排序队列的头位,因为实在不好表达,就只好用“队头”这个词了)


使用数组的好处就是可以通过下标获取数组中某个变量的值。因为下标是有序的,就便于程序使用下标变量循环操作。


你不妨弄10张小方块纸,每张纸上写一个数字,排成一列,模拟数组。动动手就明白了。


修改过的程序:

var
    a:array[1..10] of longint;
    i,j,t:longint;
    
begin
  for i:=1 to 10 do read(a[i]);   //给数组中的变量赋值
  
  for i:=1 to 9 do                //指定队头数
    for j:=i+1 to 10 do           //依次扫描后续队列
        if a[i]<a[j] then         //有比队头大的就交换到队头
           begin
              t:=a[i]; a[i]:=a[j]; a[j]:=t;
           end;
           
  for i:=1 to 10 do write(a[i]);  //输出结果
end.
追问
输入我当然知道,只是懒得写了,呵呵
追答
呵呵
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式