问题 问答题

请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程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文件,并且在本程序中调用。
//源程序
#include"DataList.h"
DataList:: DataList(int len, double data[]):len(len)
d=new double[len];
for(int i=0; i<len; i++) d[i]=(data==NULL0.0:data[i]);

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

void DataList::show() const//显示数据表
for(int i=0; i<len-1,i++) cout<<d[i]<<",";
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<<endl<<"排序后:";
list.show();
//writeToFile("K:\\b10\\61000102\\",list);
return 0:

答案

参考答案://********333********
int n=len:
int tmp;
for(int i=0;i<n;i++)
for (int j=0;j<i;j++)
if(d[i]<d[j]){
tmp=d[i];
d[i]=d[j];
d[j]=tmp;
}
//********666********

解析: 首先取得数组的长度len。然后利用插入法进行排序,逐次比较已经有序的数组序列,待排的d[i]和前面i-1个已经有序的数组序列比较,如果d[i]<d[j],则交换位置。

问答题 简答题
单项选择题