A-A+

请编写一个函数void bubble(double data[] int length) 其

2022-08-05 22:59:57 问答库 阅读 173 次

问题详情

请编写一个函数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;}}}
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循环和常用的冒泡排序法的综合水平。冒泡排序法就是将相邻的两个数据作比较,把较小的数据交换到前面,以此类推。这是经典的算法应该掌握。

考点: