欢迎来到天天文库
浏览记录
ID:38706388
大小:52.50 KB
页数:2页
时间:2019-06-18
《数组及其应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数组及其应用10.9输入全校学生的期中考试总分,按照成绩从高分到低分输出。学校人数不超过1800人。如:输入:5600580620610635输出:635620610600580一、数组一)一维数组1.数组的定义 用来描述由固定数目的同一类型的元素组成的数据结构。一维数组类型的一般格式:array[下标1..下标2]of<基类型>;全校1800名学生:如:vara:array[1..1800]ofinteger;1)、a是数组名,代表的并不是一个变量,而是一批变量:a[1],a[2],a[3]……a[1800]共1800个变量。2)、array、of是定义数组的保留字;3)、[1..
2、1800]是数据编号的下限和上限,说明了数据的个数(上限-下限+1);4)、最后一个是数据的基类型:每个数据元素的数据类型。2、数组元素的使用:数组的每个元素和普通的变量完全一样,可以赋值、输入、输出等操作。如:vara:array[1..1800]ofinteger;读入1800个学生的语文成绩:read(a[1]);a[1]:=90;a[i+j]:=120;数组元素的输入与输出通常用for循环完成:Fori:=1to1800doread(a[i]);//读入Fori:=1to1800dowrite(a[i],’‘);//输出二)数组的应用1、(练习数组的输入与输出基本操作)从键盘上
3、顺序输入n(N<100)的数,按输入顺序和反序输出。输入:520104526输出:2010452626541020varn,i:integer;a:array[1..100]ofinteger;beginreadln(n);fori:=1tondoread(a[i]);fori:=1tondowrite(a[i],’‘);fori:=ndownto1dowrite(a[i],’‘);end.2、编程将一个十进制整数k转化为二进制数(k<1000000)。样例:输入:19输出:10011vark,n,i:longint;a:array[1..20]ofinteger;beginreadl
4、n(k);n:=0;whilek<>0dobeginn:=n+1;a[n]:=kmod2;k:=kdiv2;end;fori:=ndownto1dowrite(a[i]);end.选择排序算法基本思想:对待排序的序列进行n-1遍处理:第1遍处理是从a[1],a[2],……a[n]中选择最小的放在a[1]位置;第2遍处理是从a[2],a[3],……a[n]中选择最小的放在a[2]位置;……第I遍处理是将a[i],a[i+1],……a[n]中最小的数与a[i]交换位置,这样经过第i遍处理后,a[i]是所有的中的第i小。即前i个数就已经排好序了。N-1遍处理后,剩下的最后一个一定是最大的,不
5、需要再处理了。a:待排序的数组;//从小到大排序fori:=1ton-1do{从第一个元素开始,进行n-1遍处理}forj:=i+1tondo{第i遍处理}Ifa[i]>a[j]then{交换a[i]和a[j]}begint:=a[i];a[i]:=a[j];a[j]:=t;end;constmaxn=100;vara:array[1..maxn]ofinteger;n,i,j,t:integer;beginreadln(n);fori:=1tondoread(a[i]);fori:=1ton-1doforj:=i+1tondoifa[i]6、[i]:=a[j];a[j]:=t;end;fori:=1ton-1dowrite(a[i],'');writeln(a[n]);end.冒泡排序又称为交换排序,其基本思想是:对待排序记录的关键字进行逐个比较,如发现两个记录是反序的,则进行交换,直到无反序排序的记录为止。例2:输入7个数据,然后用冒泡法对其进行从小到大排序。测试数据:输入:3543423487890输出:3834548790234分析:使用冒泡法的方法是:逐次扫描,每次扫描都对相邻的两个元素进行比较,每当发现相邻两元素的顺序不对时,立即进行交换。扫描一遍完毕后,就把一个当前最大的数“沉”到底部,而较小的数如同气泡一样往7、上冒,所以称之为“冒泡排序法”。现设F记录在当前一遍的扫描过程中,是否发生过交换。若F=1表示执行过交换操作,F=0则表示没有进行过交换,我们称F为交换标志。可得程序如下:PROGRAMAA;CONSTN=7;TYPEARRAYTYPE=ARRAY[1..N]OFINTEGER;VARA:ARRAYTYPE;I,J,K,F:INTEGER;BEGINFORI:=1TONDOREAD(A[I]);FORI:=1TON-1DOBEGINF:=0;F
6、[i]:=a[j];a[j]:=t;end;fori:=1ton-1dowrite(a[i],'');writeln(a[n]);end.冒泡排序又称为交换排序,其基本思想是:对待排序记录的关键字进行逐个比较,如发现两个记录是反序的,则进行交换,直到无反序排序的记录为止。例2:输入7个数据,然后用冒泡法对其进行从小到大排序。测试数据:输入:3543423487890输出:3834548790234分析:使用冒泡法的方法是:逐次扫描,每次扫描都对相邻的两个元素进行比较,每当发现相邻两元素的顺序不对时,立即进行交换。扫描一遍完毕后,就把一个当前最大的数“沉”到底部,而较小的数如同气泡一样往
7、上冒,所以称之为“冒泡排序法”。现设F记录在当前一遍的扫描过程中,是否发生过交换。若F=1表示执行过交换操作,F=0则表示没有进行过交换,我们称F为交换标志。可得程序如下:PROGRAMAA;CONSTN=7;TYPEARRAYTYPE=ARRAY[1..N]OFINTEGER;VARA:ARRAYTYPE;I,J,K,F:INTEGER;BEGINFORI:=1TONDOREAD(A[I]);FORI:=1TON-1DOBEGINF:=0;F
此文档下载收益归作者所有