问题 问答题

请编写一个函数void bubble(double data[],int length),其中data是一维数组,存放比较的数据,length是数组中存放元素的个数,用冒泡法将数据(个数可变)捧序后由小到大输出。冒泡法是常用的排序算法,这种算法执行效率不高,但比较简单,就是将相邻的两个数据作比较,把较小的数据交换到前面。纵向看来,交换过程中较小的数据就好像水中的气泡不断浮起。要求使用for循环实现算法。
注意:部分源程序已存在文件test23_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数bubble的花括号中填写若干语句。
文件test23_.cpp的内容如下:
#include<iostream.h>
void bubble(double data[],int length)


void main ()

int n;
cout << "请输入数据的个数";
cin>>n;
double* ddata = new double[n];
for(int i = 0; i < n; i++)

cout<<"No."<<i+1<<": ";
cin>>ddata[i];

bubble (ddata, n);
cout<<"排序后输出数据:"<<endl;
for(i = O; i<n; i++)

cout<<"No."<<i+1<<":";
cout<<ddata[i]<<endl;

答案

参考答案:void bubble(double data[],int length)
{
int segment;
int loop;
double temp;
for(segment=0;segment<=length-2;segment++)
{
for(1oop=length-2;loop>=segment;loop--)
if(data[loop+1]<data[loop])
{
temp=data[loop];
data[loop] =data [loop+1];
data[loop+1]=temp;
}
}
}

解析:本题考查的是考生使用for循环和常用的冒泡排序法的综合水平。冒泡排序法就是将相邻的两个数据作比较,把较小的数据交换到前面,以此类推。这是经典的算法应该掌握。

实验题
单项选择题