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

admin2021-06-10  34

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

选项

答案for(int i=0;i<len;++i)//从头遍历数组d fof(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] }

解析 主要考查的是DataList类,其中涉及动态数组、构造函数、析构函数、const函数和排序算法。Sort函数是一个排序函数,对于排序可以使用的方法很多,考生只需要使用自己最擅长的方法即可,题目并没有指定考生使用哪种方法。本题使用最简单的冒泡排序算法,首先明确要排序的动态数组d,其长度为len,在此可以使用两个下标i和j相比较,当d>d[j]时,数组内的值利用中间变量temp进行交换。
转载请注明原文地址:https://jikaoti.com/ti/K9h0FFFM
0

最新回复(0)