第3章(一)数组
第3章 数组

3.2 一维数组
在编写程序时,最经常用到的是一维数组。要在Java里创建 并使用一维数组,需要以下步骤。 (1)声明一个数组变量来存放该数组。 (2)创建一个新的数组对象并将其赋值给上一步所创建的 数组变量。 (3)在该数组中存储数据。 (4)访问或修改此数组中存储的数据(元素)。
3.2.1 声明一维数组变量
3.1 数组的概念与特点
很显然,在上述情况下,对于同一类型的批量数据,在程序 中再通过定义单个的变量这种方式已经不能解决存储大批 量数据的问题了,因为它既不经济,也不实际。对于这种 类型的问题,Java提供了“数组”这种引用数据类型来 解决。
3.1.1 什么是数组
数组是用来存储具有相同数据类型的数据的集合,可以使用 共同的名字来引用数组中存储的数据。数组可以存储任何 类型的数据,包括原始数据类型和对象,但是一旦指定了 数组的类型之后,就只能用来存储指定类型的数据。
3.3.4 修改二维数组元素
在声明一个数组变量和创建一个二维数组对象以后,也可以通过为数组中 的元素赋值,来修改数组中任一元素的值。这与修改一维数组很类似 。请看下面的代码。 public class Test4{ public static void main(String[ ] args){ //定义二维数组arrays int[ ][ ] arrays = {{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35}}; arrays[0][0] = arrays[1][3] + arrays[2][0]; //将两个数组元素相加 System.out.println(arrays[0][0]); //输出结果为55 } }
3.3.1 声明二维数组变量
C语言基础(3)

数组名[下标][下标]; 和 数组名[下标][下标]…; 其中:
下标是整型常数或表达式,该பைடு நூலகம்表示了数组元素(下标变量)
在多维数组中的位置,若下标值为实型数据系统会自动取整。 例如,定义语句为:double a[5][5], y; double a[5][5], y; a[2][3]=300; y=500; /*将a数组中2行3列元素赋值为300*/ /*将变量y赋值为500*/
T
a[j] < a[j-1]
F
a[j] a[j-1] 输出a[0]到a[N-1]
3.3.1 数组的常用排序方法
2. 选择排序(Select sorting) 选择排序的基本思想是在待排的n个数据中寻找最大(小)值,
并将其移动到最前面作为第一个数据;然后在剩下的n-1个
数据中用相同方法寻找最大(小)值,将其作为第二个数据; 以此类推直到处理完为止。算法描述为:
int a[3][4], matrix[10][10]; //定义了两个整型的二维数组a和matrix
其中a由3行4列共12个元素构成;matrix由10×10共100个元素组成。
float b[3][3][3]; //定义了一个3×3×3共27个元素构成的数组b
3.2.1 二维数组和多维数组的定义
⑤
定义数组时可以用“存储类型”加以说明,指定数组存储
单元分配到静态存储区还是动态存储区。
例如,一个静态的单精度实型数组可用下语句定义。
static float score[50];
3.1.1 一维数组的定义和初始化
2. 初始化数组:允许在定义数组时给数组初值。
数据类型名 数组名[存储单元数]={常量列表}; 其中:常量列表中两项间须用逗号分隔。
c语言第03章

活期存款一年后本息和为: p1=p0(1+r1) 一年期定期存款,一年后本息和为: p2=p0(1+r2) 两次半年定期存款,一年后本息和为:
r3 r3 p3 = p0(1 + )(1 + ) 2 2
6
3.1顺序程序设计举例
算法:
输入p0,r1,r2,r3的值 计算p1=p0(1+r1) 计算p2=p43; r 3 )
2 2
输出p1,p2,p3
7
3.1 顺序程序设计举例
#include <stdio.h> 定义变量同时赋予初值 int main ( ) {float p0=1000, r1=0.0036,r2=0.0225, r3=0.0198, p1, p2, p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%f\n%f\n%f\n”,p1, p2, p3); return 0; }
\„ \ddd \“ 单引号 例 void main() { printf(“Y\b=\n”);\xhh 3位8进制数代表的字符 aaa }
转义字符:反斜线后面跟一个字符或一个代码值表示
<
双引号 运行结果: 2位16进制数代表的字符 屏幕显示:= 15 打印机输出:¥
C语言程序设计
第3章 最简单的C程序设计
19
C语言程序设计
第3章 最简单的C程序设计
3.2.3不同类型数据间的转换
1.隐式转换
什么情况下发生
运算转换------不同类型数据混合运算时 赋值转换------把一个值赋给与其类型不同的变量时 输出转换------输出时转换成指定的输出格式
第03章 数组、字符串和排序

3.2.6 StringTokenizer类
1.构造函数 public StringTokenizer(String str) 对串str进行子串分离,分隔符是\t\n\r\f中任一个字符均可。若 多个分隔符连在一起,则效果相当于一个分隔符。 public StringTokenizer(String str,String delim) 对串str进行子串分离,分隔符是delim串中任一个字符均可。 2.常用方法 public int countTokens() 分离后子串的总的数目。 public boolean hasMoreTokens() 若还有子串,则返回true,否则返回false 。 public String nextToken() 返回下一个子串。
3.1.1 一维数组
(2) 引用类型的一维数组空间分配 第1步:数组分配空间,每个数组元素都是一个引用,格式为: <数组名> = new <元素类型>[<元素个数>]; 第2步:为每一个数组元素分配所引用的对象空间,格式为: <数组名>[i]=new <数组元素对象的构造函数>; 如: Point[] pa = new Point[3]; //分配了3个引用空间 //下面为每一个数组元素分配对象空间 pa[0]=new Point(0,0); pa[1]=new Point(1,1); pa[2]=new Point(2,2); 4.一维匿名数组 为了方便于给方法的形式参数传值或给变量赋值,Java提供 所谓的匿名数组,即数组没有名字。一维匿名数组格式为: new <数组元素类型>[]{<表达式1>,<表达式2>,…}
3.1.2 多维数组
4.二维匿名数组 Java中二维匿名数组格式为: new <数组元素类型>[][]{ {<表达式11>,<表达式12>,…}, {<表达式21>,<表达式22>,…}, …… {<表达式n1>,<表达式n2>,…} } 如: int[][] ia; ia = new int[][]{ {1},{2,3},{3,4,5} }; 5.二维数组元素的使用 二维数组中元素的使用方式是:<数组名>[<下标1>][<下标 2>] 其中:<下标1>、<下标2>必须是int类型的表达式,每一维 的下标都从0开始。
C语言 一维数1组

第 3章 数组
下标: 0 1
…
9
a: 110 29 3 4 5 6 7 8 29 110
ii
jj
算法思想:取得前后两个元素的值需要设置 两个下标变量,假设是i,j。算法步骤: (1)i=0, j=9 (2)如果 i<j则:
①交换i和j的值 ② i++ ③ j-(3)重复(2), 直到i>=j结束
第 3章 数组
scanf(“%d”, &a[i] );
/*输出*/ for(i=0;i<6;i++)
printf(“%d”, a[i]);
第 3章 数组
(3)赋值 注意:数组名是地址常量,值不可改变,不允许
对数组名进行赋值运算。
例如:假设数组a中有元素1,2,3,则下面的 赋值是错误的:
int a[3]; a={1,2,3}; /*error*/
第 3章 数组
3.1
教学目标: 本章介绍C语言中数组的定义和使用,其中重
点介绍一维数组的定义、引用、初始化
本章重点 : 1.一维数组的定义、初始化及应用; 2.数组元素的引用方法:下标法、数组名法。 本章难点:
利用指针实现对数组的操作; 教学方法:理论教学与实践教学相结合。
第 3章 数组
问题的提出:
注意:数组定义时没有初始化时值的情况 若数组定义时没有初始化,各元素均是随机值。 例如 int a[3]; 此时a[0],a[1],a[2]都是随机值。
若数组定义时前面加上static来修饰,整型数组各元 素值是0,字符数组各元素值是’\0’(ASCII码值0)。 例如 static int a[3]; 此时a[0],a[1],a[2]都是0。
第3章数组及矩阵运算

第3章数组及矩阵运算第三章数组与矩阵及其基本运算3.1 数组3.1.1数组与矩阵的输⼊1. 直接输⼊法对于规模较⼩的矩阵,可直接在MATLAB 命令窗输⼊,也可在程序编辑器中写⼊程序,矩阵元素值还可在变量浏览器修改。
矩阵所有元素包含在“[]”内,同⾏元素之间⽤“,”隔开,也可⽤空格,两⾏元素⽤“;”分开,矩阵元素可以是数值,也可以是表达式。
【例3-1】输⼊矩阵=987654321A 。
解:(1)在键盘上输⼊下列内容A = [1,2,3; 4,5,6; 7,8,9](2)按【Enter 】键,指令被执⾏,⼯作窗将显⽰以下结果:A =1 2 3 4 5 67 8 9也可输⼊:A = [1 2 3; 4 5 6; 7 8 9] %同⾏元素之间⽤空格或 A=[1 2 3;4 5 6; 7 8 9]【例3-2】已知B=2+3i ,输⼊矩阵??+=9872*6)5(4323/1B sqrt A 。
解:(1)在键盘上输⼊下列内容A = [1/3,2,3; 4,sqrt(5),6*B+2; 7,8,9](2)按【Enter 】键,指令被执⾏,⼯作窗将显⽰以下结果:A =0.3333 2.0000 3.00004.0000 2.2361 14.0000 +18.0000i 7.0000 8.0000 9.0000【例3-3】⽤下⾯三条指令创建⼆维数组C 。
解:(1)在键盘上输⼊下列内容a=sqrt(2); b=33^0.5;C=[1,1/a+i*b,b*sqrt(a);sin(pi/6),a+b,3+2i](2)按回车后得:C =1.0000 0.7071 + 5.7446i 6.8315 0.5000 7.1588 3.0000 +2.0000i复数矩阵的输⼊见例2-2、例2-3。
【例3-4】输⼊矩阵??++++++=i i ii i iCN 166155144133122111。
解:在键盘上输⼊下列内容后,按回车后得CN 矩阵。
数据结构与算法第3章课后答案
第 3 章特殊线性表——栈、队列和串(2005-07-14) -第 3 章特殊线性表——栈、队列和串课后习题讲解1. 填空⑴设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5,经过push,push,pop,push,pop,push,push后,输出序列是(),栈顶指针为()。
【解答】23,1003H⑵栈通常采用的两种存储结构是();其判定栈空的条件分别是(),判定栈满的条件分别是()。
【解答】顺序存储结构和链接存储结构(或顺序栈和链栈),栈顶指针top= -1和top=NULL,栈顶指针top等于数组的长度和内存无可用空间⑶()可作为实现递归函数调用的一种数据结构。
【解答】栈【分析】递归函数的调用和返回正好符合后进先出性。
⑷表达式a*(b+c)-d的后缀表达式是()。
【解答】abc+*d-【分析】将中缀表达式变为后缀表达式有一个技巧:将操作数依次写下来,再将算符插在它的两个操作数的后面。
⑸栈和队列是两种特殊的线性表,栈的操作特性是(),队列的操作特性是(),栈和队列的主要区别在于()。
【解答】后进先出,先进先出,对插入和删除操作限定的位置不同⑹循环队列的引入是为了克服()。
【解答】假溢出⑺数组Q[n]用来表示一个循环队列,front为队头元素的前一个位置,rear为队尾元素的位置,计算队列中元素个数的公式为()。
page: 2The Home of jetmambo - 第 3 章特殊线性表——栈、队列和串【解答】(rear-front+n)% n【分析】也可以是(rear-front)% n,但rear-front的结果可能是负整数,而对一个负整数求模,其结果在不同的编译器环境下可能会有所不同。
⑻用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是()和()。
【解答】O(1),O(n)【分析】在带头指针的循环链表中,出队即是删除开始结点,这只需修改相应指针;入队即是在终端结点的后面插入一个结点,这需要从头指针开始查找终端结点的地址。
matlab——第三章 数值数组及其运算
sqrt(A) 对A的各元素求平方根
3.6.4 标准数组生成函数
指令 diag eye magic ones 含义 指令 含义
产生对角形数据 rand 产生均匀分布随机数组 randn 产生正态分布随即数组 产生单位数组 zeros 产生全0数组 产生魔方数组 产生全1数组
>> ones(3) ans = 1 1 1 1 1 1 1 1 1 >> ones(1,2) ans = 1 >> magic(3) ans = 8 1 6 3 5 7 4 9 2
3.6 数组运算和矩阵运算
3.6.1 标量-数组运算
>>g = 1 2 5 6 9 10 >> g-2 ans = -1 0 3 4 7 8 > >2*g-1 ans = 3 4 1 3 5 7 7 8 9 11 13 15 11 12 17 19 21 23 >> 2*g/5+1 ans = 1 2 1.4000 1.8000 2.2000 5 6 3.0000 3.4000 3.8000 9 10 4.6000 5.0000 5.4000
啊(
>>A=zeros(2,4) A= 0 0 0 0 0 0 0 0 >>A(:)=1:8 %全元素赋值方式 A= 1 3 5 7 2 4 6 8 >>s=[2 3 5] %产生单下标数组行数组 s= 2 3 5 >>A(s) ans = 2 3 5
>>Sa=[10 20 30]' %Sa是长度为3的“列数组” Sa = 10 20 30 >>A(s)=Sa %单下标方式赋值 A= 1 20 30 7 10 4 6 8 >>A(:,[2 3])=ones(2) %把A的第2、3列元素全赋值为1 A= 1 1 1 7 10 1 1 8
虚拟仪器技术 第3章
第3章 数组、簇和波形
图3-8 Array子模板
第3章 数组、簇和波形
1.Array Size . Array Size节点的图标如图3-9所示,节点的输入array为一 个任意维数的数组,输出size(s)返回各维的长度。若输入一维 数组,则输出为一个整数值;若输入多维数组,则输出为一个 一维数组,每个元素对应输入数组中每一维的长度。 【例3.1】 求一维数组、二维数组和三维数组的长度。 VI的前面板和程序框图如图3-10所示。
第3章 数组、簇和波形
数组、 第3章 数组、簇和波形
3.1 数组 3.2 簇 3.3 波形 习题3 习题
第3章 数组、簇和波形
数组、簇和波形是LabVIEW中三类比较复杂的数据类型。 数组是一种由同一类型数据元素组成的大小可变的集合,与其 他编程语言中的数组概念相同。簇是由混合类型数据元素组成 的大小固定的集合,相当于C语言中的结构数据类型。波形数 据是LabVIEW为数据采集和处理提供的一种专门的数据结构。 灵活运用这三种数据类型可极大地提高编程效率,简化程序代 码。
第3章 数组、簇和波形
图3-13 例3.2的前面板和程序框图
第3章 数组、簇和波形
图3-14 Replace Array Subset节点的图标
第3章 数组、簇和波形
【例3.3】 替换二维数组中的某一列元素。 VI的前面板和程序框图如图3-15所示。 4.Insert Into Array . Insert Into Array节点的图标如图3-16所示,n-dim array是任 意类型的n维数组,接入数组后会自动生成n个索引端口,完成 的功能是在index指定的位置插入n or n-1 dim array的内容。注 意,对每组n个索引端口只能连接一个。 【例3.4】 在二维数组中插入一行元素。 VI的前面板和程序框图如图3-17所示。
LabVIEW教程第三章数组、簇和图形
第三章数据类型:数组、簇和波形3.1概述数组是同类型元素的集合。
一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。
可以通过数组索引访问其中的每个元素。
索引的范围是0到n – 1,其中n是数组中元素的个数。
图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推。
数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。
图3-1数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。
它类似于C语言中的stuct。
使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。
减少子VI的连接端子的数量。
波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
3.2数组的创建及自动索引3.2.1创建数组一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。
如果需要用一个数组作为程序的数据源,可以选择Functions»Array»Array Constant,将它放置在流程图中。
然后再在数组框中放置数值常量、布尔数还是字符串常量。
下图显示了在数组框放入字符串常量数组的例子。
左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。
图3-1数组的创建在前面板中创建数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。
这样就创建了一个数值数组。
也可以直接在前面板中创建数组和相应的控制对象,然后将它们复制或者拖曳到流程图中,创建对应的常数。
还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组。
3.2.2数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组首地址
a[8] a[7] a[1] a[0]
上一页 下一页
…
a
三、数组元素的引用形式
一般不能引用整个数组 int a[10],b[10]; a=b; 数组元素的引用: 数组名[下标 下标] 数组元素的引用 数组名 下标 int a[10]; a[0]=2;
a[0] = a[2]+a[4]*2 0 2 下标
上一页 下一页
f [0]=1 f [1]=1 f [i]= f [i-1]+f [i-2] 求其前20项 求其前 项 1,1,2,3,5,8,13…..
基本算法 1.排序 排序 (1)冒泡法排序 冒泡法排序
输入5个数 进行由小到大排序 输入 个数,进行由小到大排序 个数 进行由小到大排序: 9 8 5 4 2
上一页 下一页
例如: 输入n个成绩 个成绩,求平均分 例如 输入 个成绩 求平均分
#include<iostream.h> 输出高于平均分的成绩 void main() int sc[50], { int sc,n,i; n, i; float aver=0.0; cin>>n; for(i=0;i<n;i++) {cin>>sc[i]; {cin>>sc; aver+=sc[i];} aver+=sc; aver/=n; } for(i=0 ; aver/=n; i<n; i++) if(sc[i]>aver) cout<<aver; cout<<sc[ i] ); } 上一页 下一页
上一页
下一页
(1)
(2)
3 5 7 10 12 18
for(i=0;i<6;i++) if(a[i]==b) break;
3 5 7 12 10 12 18
for(j=i;j<5;j++) a[j]=a[j+1];
3 5 7 12 18 12 18
上一页
下一页
4、查找: 查找:
(1)顺序查找 (2)折半查找法:对有序数组 折半查找法: 是对有序数列进行查找的一种高效查找办法,其基本思 想是逐步缩小查找范围,采取半分作为分割范围可使比 较次数最少. 比较过程:(设数列已做降序排序处理) 设置三个变量,分别代表数组序列 s 的Top,Bottom和 Middle位置,其中Middle=(Top+Bottom)/2, Middle=(Top+Bottom)/2,进行下列判 Middle=(Top+Bottom)/2, 断 X = 15 1 3 4 6 8 10 12 15 18 20 25
• 在科学计算和数据处理中,要用到成批数据,这些数 在科学计算和数据处理中,要用到成批数据, 据类型相同, 据类型相同,且彼此间存在一定的顺序关系 • 数组可以表现多种逻辑关系的数据形式。 数组可以表现多种逻辑关系的数据形式。
数列 5 一维数组 a[0] a[1] a[2] a[3] a[4] a[5]
输出数组
上一页 下一页
源程序: 源程序
/*排序 排序*/ 排序 #include<iostream.h> for (i=0;i<N-1;i++) #define N 5 for(j=0;j<N-1-i;j++) void main() if(a[j]>a[j+1]) { { int i,j,a[N],t; t=a[j]; for(i=0;i<N;i++)/*输入 输入*/ 输入 a[j]=a[j+1]; cin>>a[i]; a[j+1]=t; for(i=0;i<N;i++)/*输出 输出*/ 输出 } cout<<a[i]; for(i=0;i<N;i++) /*输出 输出*/ 输出 cout<<a[i]; }
上一页 下一页
8
3
2
9
6
一、一维数组的定义
数组 由一组具有同一数据类型 的变量 有序集合。 有序集合。 格式 : 数据类型 数组名 常量表达式 数组名[常量表达式 常量表达式];
例如: 例如: int a[10];
类型说明
数组名
上一页 下一页
常量表达式
int
a[10];
可以使用宏定义: 可以使用宏定义 #include<iostream.h> #define N 10 void main() {….. int a[N]; ….. }
上一页 下一页
六、一维数组程序设计举例
用一维数组求Fibonacci 数列
#include<iostream.h> void main() { int i; static int f[20] = {1,1}; for(i=2;i<20;i++) f[i] = f[i-2] +f[i-1]; for(i=0;i<20;i++) {if(i%5 == 0) cout<<“\n”; cout<<“\t”<<f[i]; } }
上一页
下一页
3.在有序数组中删除一个数 例如 在 数组中删除一个数,例如 删除一个数 例如: 3 5 7 10 12 18, 将b=10删除 , 删除 步骤: 步骤: (1) 要找到 在数组中的位置 要找到b在数组中的位置 (2) 后面的数组元素依次前移 覆盖该位置 后面的数组元素依次前移,覆盖该位置 上的数组元素即可实现删除
上一页
下一页
(1)
a[0] a[1] a[2] a[3] a[4] a[5]
3 5 7 12 18
b=10
(2)
3 5 7 12 12 18 18
for(j=4;j>=i;j--) a[j+1]=a[j];
(3)
3 5 7 10 12 12 18
a[i]=b;
for(i=0;i<5;i++) if(a[i]>b) break;
上一页 下一页
二、字符串和字符串结束标志
将字符串作为字符数组来处理 字符串结束标志‘ 字符串结束标志‘\0’: ‘\0’作为判断字符串是否结束标志 作为判断字符串是否结束标志 作为 使用字符串常量初始化 char c[ ]={“I am happy”}; char c[ ]=“I am happy”; 只要用字符串常量,就会自动加 就会自动加‘ 故长度为 故长度为11 只要用字符串常量 就会自动加‘\0’,故长度为 *字符串长度为有效字符串的长度 字符个数 字符串长度为有效字符串的长度(字符个数 字符串长度为有效字符串的长度 字符个数)
五、一维数组的输入和输出
数组的输入和输出只能逐个对数组元素进行操作 字符数组例外) (字符数组例外) int a[10],i; 输入方法: 输入方法: 输入第i个数组元素: cin>>a[i]; 输入整个数组元素: 输入整个数组元素 for (i=0;i<10;i++) cin>>a[i]; 输出方法: 输出方法: 输出第i个数组元素: cout<<a[i]; 输出整个数组元素: 输出整个数组元素: for (i=0;i<10;i++) cout<<a[i];
上一页 下一页
/*排序 排序*/ 排序 输入数组 for (i=0; i<N-1; i++) for ( j=0;j<N-1-i ; j++) for i=0 to n-1 if (a[j]>a[j+1]) for j =0 to n-i-1 { t =a[j]; a[j] >a[j+1] 真 假 a[j]=a[j+1]; a[j+1]=t; a[j] a[j+1] }
Top Middle Bottom
上一页 下一页
§4-2 字符数组
一、字符数组的定义 二、字符串及字符串结束标志 三、字符数组的输入和输出 四、字符串处理函数 五、字符数组程序应用
返 回 上一页 下一页
一、字符数组
定义 用来存放字符数据的数组为字符数组。 用来存放字符数据的数组为字符数组。 int c[10]; 二者互相通用 ; 二者互相通用,
5 4 2 8
5 4 4 4 5 2 2 2 5
4 2 2 4
比较4次 第一轮
比较3次 第二轮
比较2次 比较1次 第三轮 第四轮
可以推知: 对 n 个数,则要进行n-1趟扫描,在第 n i 趟扫描中要进行 n-i 次比较。
上一页 下一页
“211”: 两重循环,一次比较,一次互换 n个数要循环比较n-1 轮; 在每轮中a[j] 与a[j+1]进行比较互换 (数组元素的下标从0~数组长度n-1) for(i=0;i<=n-2;i++)// i<n-1 第1轮比较:i=0: for(j=0;j<=n-2-i;j++)//j<n-1-i j= 0….n-2 { 第2轮比较:i=1: if(a[j]>a[j+1]) j= 0….n-3 { 第2轮比较:i=2: t =a[j]; j= 0….n-4 若为a[j]与a[j-1] a[j]=a[j+1]; … 的比较互换,则j a[j+1]=t; 第n-2轮比较:i=n-3: 的变化范围为? j= 0…1 } 0~n-1-i 第n-1轮比较:i=n-2: } j= 0
上一页
下一页
2.在有序数组中插入一个数后使原数组 在 数组中插入 插入一个数后使原数组 仍然有序 例如: 例如:3 5 7 12 18, 将b=10插入 , 插入 步骤: 步骤: (1)要找到 在数组中的位置 要找到b在数组中的位置 要找到 (2)给b让位置 给 让位置 (3)将b放到该位置上 将 放到该位置上