日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

利用派生类实现统一接口解决三种基础排序问题

發布時間:2023/12/14 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用派生类实现统一接口解决三种基础排序问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程題:
1.算法:派生類解決三個排序(冒泡,插入,選擇)
2.一個基類:整形數組,數據隨機產生(不能重復)
3.調用的時候給出統一的sort接口
三個派生類解決不同算法
每一個結果要輸出到文件里
每個數組初始狀態,排序后的狀態
輸出算法效率;(最低要求輸出時間間隔,比如說在哪段效率高)
對于效率統計:每一個數據單元所用的時間(效率)
效率是否隨數據成員呈現線性變化

代碼:

#include <iostream> #include<stdlib.h> #include<time.h> #include<fstream> #include<iomanip> #define N 10000 using namespace std;class Base { public:double time;int aa[N];//數組virtual void sort(){}//虛函數統一接口virtual void funout(){}//輸出數組virtual int fout(){return 0;}//輸出數組到文件virtual int ffout(){return 0;}//輸出程序運行時間到文件Base()//隨機生成不重復整數{for(int j=0;j<N;j++){//srand(time(0));aa[j]=rand()%10000+1;while(1){int flag=1;for(int i=j-1;i>=0;i--){if(aa[j]==aa[i]){//srand(time(0));aa[j]=rand()%10000+1;flag++;}}if(flag==1)break;}}} }; class Bubble:public Base { public:void sort()//冒泡排序{clock_t start,finish;start=clock();for(int i=0;i<N;i++)for(int j=0;j<N-1;j++){if(aa[j]<aa[j+1]){int temp=aa[j];aa[j]=aa[j+1];aa[j+1]=temp;}}finish=clock();time=(double)(finish-start)/CLOCKS_PER_SEC;}void funout()//輸出數組{for(int i=0;i<N;i++){cout<<aa[i]<<'\t';}}int fout(){ofstream outFile("d:\\Bubble1.txt",ios::out|ios::app);//輸出結果到文件里if(!outFile){cerr<<"error: unable to open file!";return 1;}for (int i=0;i<N;i++){outFile<<endl;outFile<<setw(10)<<aa[i];}return 0;}int ffout(){ofstream outFile("d:\\Bubble2.txt",ios::out|ios::app);//輸出結果到文件里if(!outFile){cerr<<"error: unable to open file!";return 1;}outFile<<endl<<time<<"(s)"<<endl;return 0;} }; class Insertion:public Base { public:void sort()//插入排序{clock_t start,finish;start=clock();for(int i=0;i<N;i++){int t=aa[i];for(int j=i-1;j>=0&&t>aa[j];j--){aa[j+1]=aa[j];aa[j]=t;}}finish=clock();time=(double)(finish-start)/CLOCKS_PER_SEC;}void funout()//輸出數組{for(int i=0;i<N;i++){cout<<aa[i]<<'\t';}}int fout(){ofstream outFile("d:\\Insertion1.txt",ios::out|ios::app);//輸出結果到文件里if(!outFile){cerr<<"error: unable to open file!";return 1;}for (int i=0;i<N;i++){outFile<<endl;outFile<<setw(10)<<aa[i];}return 0;}int ffout(){ofstream outFile("d:\\Insertion2.txt",ios::out|ios::app);//輸出結果到文件里if(!outFile){cerr<<"error: unable to open file!";return 1;}outFile<<endl<<time<<"(s)"<<endl;return 0;} }; class Selection:public Base { public:void sort()//選擇排序{clock_t start,finish;start=clock();int i,j,k,temp;for(i=0;i<N;i++){k=i;for(j=i+1;j<N;j++)if(aa[i]<aa[k])k=j;temp=aa[k];aa[k]=aa[i];aa[i]=temp;}finish=clock();time=(double)(finish-start)/CLOCKS_PER_SEC;}void funout()//輸出數組{for(int i=0;i<N;i++){cout<<aa[i]<<'\t';}}int fout(){ofstream outFile("d:\\Selection1.txt",ios::out|ios::app);//輸出結果到文件里if(!outFile){cerr<<"error: unable to open file!";return 1;}for (int i=0;i<N;i++){outFile<<endl;outFile<<setw(10)<<aa[i];}cout<<endl<<endl;return 0;}int ffout(){ofstream outFile("d:\\Selection2.txt",ios::out|ios::app);//輸出結果到文件里if(!outFile){cerr<<"error: unable to open file!";return 1;}outFile<<endl<<time<<"(s)"<<endl;return 0;} }; int main() {Bubble a;a.fout();a.sort();a.fout();a.ffout();Insertion b;b.fout();b.sort();b.fout();b.ffout();Selection c;c.fout();c.sort();c.fout();c.ffout();return 0; }

?

總結

以上是生活随笔為你收集整理的利用派生类实现统一接口解决三种基础排序问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。