请打开考生文件夹下的解决方案文件proj3,其中声明的DataList类,是一个用于表示数据表的类。sort成员函数的功能是将当前数据表中的元素升序排列。请编写这个sort函数。程序的正确输出应为: 排序前:7,1,3,11,6,9,12,10,8

admin2020-04-07  39

问题 请打开考生文件夹下的解决方案文件proj3,其中声明的DataList类,是一个用于表示数据表的类。sort成员函数的功能是将当前数据表中的元素升序排列。请编写这个sort函数。程序的正确输出应为:
    排序前:7,1,3,11,6,9,12,10,8,4,5,2
    排序后:1,2,3,4,5,6,7,8,9,10,11,12
    要求:
    补充编制的内容写在“//******** 333 ********”与“//****** 666 ******”两行之间。不得修改程序的其他部分。
    注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序调用。
    //DataList.h
    #include<iostream>
    using namespace std;
    class DataList{//数据表类
      int len;
      double*d;
    public:
      DataLlst(int len,double data[]=NULL);
      ~DataList(){delete[]d;}
      int length()const{return len;)
    //数据表长度(即数据元素的个数)
      double  getElement  (int  i)consL{return d;}
    void sort();//数据表排序
    void show()const;//显示数据表
    };
    void writeToFile(char  *,  constDataList&);

    //main.cpp
    #include"DataList.h"

    DataList::DataList(int len,double data[]):len(fen)(
      d=new double[len];
      for(int i=0;i<len; i++)
        d=(data==NULL?0.0:data);
    }

    void DataList::sort(){//数据表排序
    //******** 333 ********


    //******** 666 ********
    }
    void DataList::show()const{
    //显示数据表
      for(int i=0; i<len一1;i++)tout<<d<<",";
      couL<<d[len—1]<<endl;
    }
    int main(){
      double s[]={7,1,3,11,6,9,12,10,8,4,5,2};
      DaLaList list(12,s);
      cout<<"排序前:";
      list.show();
      list.soft();
      cout<<endl<<”排序后:”;
      list.show();
      writeToFile("",list);
      return 0;
    }

选项

答案for(int 1 =0;i<len; ++1) //从头遍历数组d for(int j =i;j <len; ++j) //从i+1处遍历数组d if(d[i]>d[j]) //d[i]和d[j]比较人,如果大于,就d[i]和d[j]做换 { int temp=d[i]; //把临时整型变量temp赋值为d[i] d[i]=d[j]; //把d[j]赋值给d[i] d[j]=temp; //把temp值赋给d[j] }

解析 本题使用最简单的冒泡排序算法,首先明确要排序的动态数组d,其长度为len,在此可以使用两个下标i和j相比较,当d>d[j]时,数组内的值利用中间变量temp进行交换。
转载请注明原文地址:https://jikaoti.com/ti/EPA0FFFM
0

最新回复(0)