问答题 请使用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中。输出函数writeToFfle已经编译为obj文件,并且在本程序调用。//DataLiSt.h#include<iostream>USingnamespacestd;classDataList{//数据表类intlen;double*d;public:DataList(intlen,doubledata[]=NULL);~DataList(){delete[]d;}intlength()const{returnfen;}//数据表长度(即数据元素的个数)doublegetElement(inti)const{returnd[i];,voidsort();//数据表排序voidshow()const;//显示数据表};voidwriteToFile(char*,constDataList&);//main.cpp#include"DataList.h"DataList::DataList(intlen,doubledata[]):len(len){d:newdouble[len];for(inti=0;i<len;i++)d[i]=(data==NULL?0.0:data[i]);}voidDataList::sort(){//数据表排序//********333********//********666********}voidDataList::show()const{//显示数据表for(inti=0;i<len-1;i++)cout<<d[i]<<",";cout<<d[len-1]<<end1;}intmain(){doubles[]=={7,1,3,11,6,9,12,10,8,4,5,2};DataList1ist(12,s);cout<<"排序前:";list.show();list.sort();cout<<end1<<"排序后:";list.show();writeToFile("",list);return0;}
【正确答案】正确答案:for(inti=0;i<len;++i) //从头遍历数组d for(intj=i;j<len;++j) //从i+1处遍历数组d if(d[i]>d[j]) //d[i]和d[j]比较人,如果大于,就d[i]和d[j]值交换 { inttemp=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进行交换。