问题 问答题

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

问答题 简答题
判断题