问答题 请使用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文件,并且在本程序调用。
//DataList. h
#include<iostream>
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[i];}
void sort();//数据表排序
void show()const;//显示数据表
};
void writeToFile(char*, const DataList&);
//main. cpp
#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==NULL? 0.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(" ", list);
return 0;
}
【正确答案】
【答案解析】for(int i=0; i<len; ++i)//从头遍历数组d
for(int j=i; j<len; ++j)
//从i+1处遍历数组d
if(d[i]>d[i])
//d[j]和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[i]>d[j]时,数组内的值利用中间变量temp进行交换。