请编写一个函数void bubble(double data[],int length),其中data是一维数组,存放比较的数据,length是数组中存放元素的个数,用冒泡法将数据(个数可变)捧序后由小到大输出。冒泡法是常用的排序算法,这种算法执行效率不高

admin2010-02-08  34

问题 请编写一个函数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;
         }
         bubble (ddata, n);
         cout<<"排序后输出数据:"<<endl;
         for(i = O;  i<n;  i++)
         {
              cout<<"No."<<i+1<<":";
              cout<<ddata<<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循环和常用的冒泡排序法的综合水平。冒泡排序法就是将相邻的两个数据作比较,把较小的数据交换到前面,以此类推。这是经典的算法应该掌握。
转载请注明原文地址:https://kaotiyun.com/show/A7ID777K
0

最新回复(0)