批量数据处理数组.ppt
《批量数据处理数组.ppt》由会员分享,可在线阅读,更多相关《批量数据处理数组.ppt(65页珍藏版)》请在三一办公上搜索。
1、第5章 批量数据处理数组,一维数组排序和查找二维数组字符串,一维数组,有时,我们需要存储一批同类型的数据,如有十只羊,主人要保存每只羊的重量,并从中挑选一只最肥的羊。解决方案:可以定义十个double型的变量sheep1,sheep10,然后比较十个值,找出一个最大值。缺点:定义了十个变量。要是有100只羊就要定义100个变量程序只能用顺序结构如果羊群规模发生变化,程序就得重写,数组,数组是保存一组同类元素的数据类型,它有两个特征:数组元素是有序的数组元素是同类的定义数组要定义三个基本内容:数组名字数组元素的类型数组的大小,数组的定义,格式:类型 数组名元素个数;其中,元素个数必须是常量。如:
2、int intarray10;但 int n=10;int intarrayn;是错的常用的方法是将元素个数定义为一个常量。如:#define NumOfElement 10 int intarrayNumOfElement;相当于 int intarray10;,初始化,定义数组时可以对数组初始化 float x5=-1.1,0.2,33.0,4.4,5.05;初始化表的长度短于要被初始化的数组元素数目,那么剩余元素被初始化为0。带有初始化的数组可以不定义数组规模,编译器根据初值的个数决定数组的大小 int a=1,2,3,4,5;则默认数组大小为5,初始化表,数组元素,数组元素的使用是通过
3、数组名及元素的序号来指定,如intarray2。当数组的大小为n时,元素的序号为0 n-1。元素的序号称为下标。程序中,下标可为整数、整型变量或结果为整型的任意表达式。正是这一特性,使得数组的应用非常灵活。,数组在内存中,定义数组就是定义了一块连续的空间,空间的大小等于元素数*每个元素所占的空间大小。数组元素按序存放在这块空间中。,为数组分配空间,如:int intarray5;占用了20个字节,因为每个整型数占四个字节。如给intarray3赋值为3,如果这块空间的起始地址为100,那么在内存中的情况是:当你引用变量intarrayidx时,系统计算它的地址100+idx*4,对该地址的内容
4、进行操作。,数组下标超界问题,C/C+语言不检查数组下标的超界。如定义数组 int intarray10;合法的下标范围是0 9,但如果你引用intarray10,系统不会报错。如数组intarray 的起始地址是1000,当引用intarray10时,系统对1040号内存进行操作。而1040可能是另一个变量的地址解决方法:由程序员自己控制。在对下标变量进行操作前,先检查下标的合法性。,数组的操作,数组的操作主要是数组元素的操作。不能直接对数组名进行赋值。如:intarray=30 是错的。事实上,数组名中存放的是该数组的起始地址。eg.数组的输入输出,int main()int intarr
5、ay10,idx;for(idx=0;idx intarrayidx;cout endl;for(idx=0;idx=9;+idx)cout intarrayidx;,数组应用羊群问题,int main()double sheep10,max=0;int i,maxNum;for(i=0;i sheepi;for(i=0;imax)max=sheepi;maxNum=i;cout“最重的羊是第”maxNum“只”endl;cout“它的重量是”max endl;return 0;,使羊群问题的程序更通用,方案一:可以将羊的个数定义成一个符号常量。需要时,可以修改这个符号常量的值方案二:定义一个
6、足够大的数组存放羊群的信息,定义一个输入结束标志,用while循环解决这个问题。可参照分数统计程序,方案一,#define NUM 10int main()double sheepNUM,max=0;int i,maxNum;for(i=0;i sheepi;for(i=0;imax)max=sheepi;maxNum=i;cout“最重的羊是第”maxNum“只”endl;cout“它的重量是”max endl;return 0;,数组应用,从终端输入一串字符,统计字符串中个字母出现的次数。解决方法:方法一:用26个整型变量计数26个字母,对输入字符串中的每一字符用switch语句分别计数。
7、方法二:用一个26个元素的数组,如num26,表示计数。num0存放a的个数,num1存放b的个数。这样对每一个字符不必用switch,而只需用一个简单的计算:+numtoupper(ch)-A;就可以了。,#include#include using namespace std;int main()int count26=0,i;char ch;ch=toupper(cin.get();while(ch=A,第5章 批量数据处理数组,一维数组排序和查找二维数组字符串,排序和查找,顺序查找二分查找选择排序法气泡排序法,顺序查找,被查找的数存放在一个数组中从数组的第一个元素开始,依次往下比较,直
8、到找到要找的元素为止。如在一整数数组中查找元素x的存储位置。,int main()int k,x;int array=2,3,1,7,5,8,9,0,4,6;cout x;for(k=0;k 10;+k)if(x=arrayk)cout k;break;if(k=10)cout not found;return 0;,排序与查找,顺序查找二分查找选择排序法气泡排序法,二分查找,数组元素已按某一顺序排序,如数字的大小顺序、字母的字母序等。以下讨论中都假设是按升序排序。过程:设定查找范围的上下界:lh,rh找出中间元素的位置:mid=(lh+rh)/2比较中间元素与欲查找的元素 key。如 key
9、 等于中间元素,则 mid 就是要查找的元素的位置;如 key 中间元素,则从 lh mid 的这些元素不可能是要查找的元素,修正查找范围为 lh=mid+1到 rh;如key rh,则要查找的元素不存在,否则返回第二步。如在数组 CityTable 中查找元素 San Francisco 的过程如下所示。,二分查找过程,二分查找程序,int main()int lh,rh,mid,x;int array=0,1,2,3,4,5,6,7,8,9;cout x;lh=0;rh=9;while(lh rh)cout 没有找到 endl;return 0;,搜索算法的效率,顺序搜索的平均时间性能(1
10、+2+3+n)/n=(n+1)/2二分查找的最坏情况的时间性能 n/2/2/2/2=1 k=log2n,N和log2N的值,排序与查找,顺序查找二分查找选择排序法气泡排序法,选择排序,使数组元素按某种次序排列选择排序法:在所有元素中找到最小的元素放在数组的第0个位置在剩余元素中找出最小的放在第一个位置。以此类推,直到所有元素都放在适当的位置用伪代码表示,int lh,rh,array;输入要排序的元素,存入array;for(lh=0;lh n;lh+)在array的从lh到n 1的元素之间找出最小的放入rh;交换下标 lh和 rh中的值;输出排好序的元素;,选择排序实例,选择排序的完善,in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 批量 数据处理 数组
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6437947.html