编程题:
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;
}

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

  1. 006_JDK的Number派生类对Comparable接口的实现

    1. JDK1.8的Integer类对Comparable接口的实现 2. JDK1.8的Float类对Comparable接口的实现 3. JDK1.8的Double类对Comparable接口的实 ...

  2. 利用Applet类和Runnable接口实现滚动字幕

    利用Applet类和Runnable接口实现滚动字幕,其中字幕文字("学好java")和时间间隔("200")需要由页面文件中标记的子标记传递. package ...

  3. C#利用WCF改进文件流传输的三种方式

    摘要:本文介绍C#利用WCF改进文件流传输的三种方式:MTOM模型.基于同步传输的异步回调模型.基于异步传输的异步模型,并提供相应的实现代码供参考. - WCF在跨域传输使用了两种模型的方法调用:一种 ...

  4. Javascript定义类(class)的三种方法

    将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...

  5. Java中实现接口的三种方式您造吗?

    本文介绍了Java中实现接口的三种方式:常规实现方式.匿名内部类和 Lambda表达式实现方式.希望已经了解的同学可以重新温习一下,不了解的同学则从中受益! Java中接口最常规的实现方式 同学们都会 ...

  6. java完全背包,一次性解决三种背包问题

    前言 首先,大概讲一下什么是"背包"问题:背包问题是指你有一个容量为V的背包,然后有n个物品在你面前,你要怎么装才能使得背包里的物品总价值最大.而每种物品是只有1个,还是有多个,亦 ...

  7. 调用第三方接口的三种方式

    调用第三方接口到三种方式 链接 Hutool 依赖 <dependency><groupId>cn.hutool</groupId><artifactId&g ...

  8. html引入外部css_CSS 三种基础选择器

    本节我们来学习 CSS 中的选择器,选择器是 CSS 里面一个很重要的概念,HTML 中的所有标签样式,都是通过不同的 CSS 选择器进行控制的.我们只需要通过选择器,就可以对不同的 HTML 标签进 ...

  9. uniapp怎么引入css_CSS 三种基础选择器

    本节我们来学习 CSS 中的选择器,选择器是 CSS 里面一个很重要的概念,HTML 中的所有标签样式,都是通过不同的 CSS 选择器进行控制的.我们只需要通过选择器,就可以对不同的 HTML 标签进 ...

最新文章

  1. vuex中获取的数据使用v-model绑定出问题
  2. mysql索引查2遍_mysql索引优化查询
  3. 简单使用TFS管理源代码
  4. mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接
  5. C++17新特性之std::string_view
  6. Android之蓝牙开发浅析
  7. python数组写入txt
  8. spring boot服务部署后访问zul页面404
  9. RestClient的简单介绍
  10. 如何在统信UOS系统中设置tomcat开机启动
  11. 图像生成 - 使用BigGAN在Imagenet数据集上生成高质量图像。
  12. 租服务器一年多少钱,阿里云服务器租赁一年多少钱...
  13. SAP中五个报废率的计算逻辑
  14. python按键持续按下响应_python按键按住不放持续响应的实例代码
  15. matlab怎么画probit,matlab对于probit模型怎么求统计值(赠probit程序)
  16. LED产品失效的技术分析指导
  17. 职高计算机软件应用,[计算机软件及应用]职高Word2003基础教程.ppt
  18. 线束测试仪工作原理是什么,使用方法介绍
  19. html弹力球游戏源码,Flash游戏制作:弹力球
  20. Google浏览器搜索技巧(提高效率)

热门文章

  1. 不同手机型号图文预览_关于iPhone的不同型号手机和不同版本系统
  2. 使用docker搭建xss挑战之旅环境
  3. ssh免密码登录配置方法,(图示加命令)
  4. thinkphp5 使用ElasticSearch 做搜索
  5. CTP2资金/持仓管理
  6. 如何把灰色的图片背景换成白底图?
  7. 编写 react-redux 库,封装 react-reduc.js 的心里路程(原理及详解)
  8. 【MATLAB教程案例7】基于Gardner环的定时误差检测matlab仿真
  9. 【IT实施培训那些事儿】
  10. [AHOI2014]骑士游戏