实验八资料

  • 格式:docx
  • 大小:144.26 KB
  • 文档页数:4

实验八
一、实验目的
1.掌握数值型一维数组的使用方法;
2.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。

二、实验任务(下列三个任务的实现代码应写在同一个主函数中,即一个主函数有三个功能程序段,分别实现排序、合并、删除)
1. 对两个无序的数组(其中数组a长度为n,数组b长度m),采用选择法(或起泡法)分别将这两个数组转为有序(元素值从小到大有序)。

要求:a和b数组长度及其元素均由键盘获取。

2. 将以上任务1构建的两个有序的数组a和b,进行有序合并,即将这两个数组进行合并的过程中其数据始终保持有序。

(提示:数据结构:三个一维数组a,b,c
将a[ia]和b[ib]比较,谁小就把谁放入c[ic](c数组用于存放合并后的数据),
谁放入了c[ic]中谁的下标就加1,同时ic(c中当前存放数据的下标)加1,
如下图所示。


3. 计算以上任务2中c数组元素的平均值,并删除c中所有低于平均值的那些元素。

三、实验说明
(1)从键盘输入一组整数
const int N=20; //符号常量
int a[N];
int n,i; //数组a具体长度有键盘输入的n值确定
cout<<"input the n:";
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
(2)排序算法流程图
(3)设有有序(值从小到大)的两组数据,将这两组数据有序合并。

算法描述如下
将a、b两个数组看成两个队列,比较队首两个元素的大小,如果a[pa]<b[pb],则将a[pa]放人c队列首部,此时数组c的长度增加1,数组a的下一个元素(pa++)继续和b 中元素进行比较。

否则将b[pb]放入c队列首部, 此时数组c的长度增加1,数组b的下一个元素(pb++)继续和a中元素进行比较。

循环执行以上过程,直到a或b队列之一为空,然后将另一个非空队列剩余元素拷贝到c队列尾部。

(4)找出所有小于C数组中的平均值的那些数并删除,算法如下
注:删除元素a[i],即将a[i+1]移至a[i];a[i+2]移至a[i+1];以此类推,直到将a[n-1]移至a[n-2]为止。

for(i=0;i<n;i++)
{
if(a[i]<ave)
{
for(j=i;j<n;j++)
{
a[j]=a[j+1]; //删除小于平均值的数组元素
}
n--; //删除小于平均值的元素后,数组的实际长度
i--;
}
}。