完整代码
https://github.com/gongfpp/sortsWithQt

成品(随机生成数字后全过了一遍)

一、 实验任务(实验题目、目的)
实现5种排序(冒泡、希尔、堆排、基数、快排),并对比时间效率

二、 任务分析

  1. 逐一实现各排序算法
  2. 设计主窗口与5个排序按键和一个总排序按键
  3. 设置各按钮槽函数
  4. 生成随机数据以供排序
  5. 设计数据输出
  6. 将排序算法和gui图形界面融合

三、 实验设计(实验环境、算法、步骤、核心代码等)
环境:QT5 使用QT CREATOR编程(内置帮助快速查询,很方便)

.h声明如下,大体为以下框架
各算法具体实现有点老生常谈了,略

private slots:void on_creatNumber_clicked();void on_quickSort_clicked();void on_bubbleSort_clicked();void on_shellSort_clicked();void on_heapSort_clicked();void on_radixSort_clicked();void on_allSort_clicked();private:void bubbleSort(QVector<int>& bubbleVec );void quickSort(QVector<int>* ,int ,int );void shellSort  (QVector<int>& shellVec);void heapSort   (QVector<int>& heapVec);
void radixSort  (QVector<int>& radixVec);

总排序按钮槽函数如下,以此类比其他槽函数的输出和结构

void MainWindow::on_allSort_clicked()
{if(vec.isEmpty()){QMessageBox::warning(this,"No data Waning","Creat data first,and then sort");return ;}QVector<QVector<int> > allSortVecs(5,QVector<int>(vec));ui->currentTime->setText("");ui->sortedEdit->setText("");QTime time;time.start();QTime timeLite;timeLite.start();bubbleSort(allSortVecs[0]);ui->currentTime->setText("冒泡耗时:"+QString::number(timeLite.elapsed()));ui->allTime->append("冒泡耗时:"+QString::number(timeLite.elapsed()));timeLite.restart();quickSort(&allSortVecs[1],0,allSortVecs[1].size()-1);ui->currentTime->setText("快排耗时:"+QString::number(timeLite.elapsed()));ui->allTime->append("快排耗时:"+QString::number(timeLite.elapsed()));timeLite.restart();shellSort(allSortVecs[2]);ui->currentTime->setText("希尔耗时:"+QString::number(timeLite.elapsed()));ui->allTime->append("希尔耗时:"+QString::number(timeLite.elapsed()));timeLite.restart();heapSort(allSortVecs[3]);ui->currentTime->setText("堆排耗时:"+QString::number(timeLite.elapsed()));ui->allTime->append("堆排耗时:"+QString::number(timeLite.elapsed()));timeLite.restart();radixSort(allSortVecs[4]);ui->currentTime->setText("基数耗时:"+QString::number(timeLite.elapsed()));ui->allTime->append("基数耗时:"+QString::number(timeLite.elapsed()));ui->currentTime->setText("总耗时:"+QString::number(time.elapsed()));ui->allTime->append("总耗时:"+QString::number(time.elapsed()));
}

四、 实验结果
qt输出到文本框比较慢,数据大了比较卡
生成的数据大小默认为50000个,可在.h中的
int numberSize = 50000;
进行修改

五、 总结
冒泡排序最好写,可在数据量大的情况下最慢,快排最快

完整代码可免费在此下载
https://github.com/gongfpp/sortsWithQt

【软件】[Qt\C++] 冒泡、希尔、堆排、基数、快排 5种排序Gui界面带对比——使用Qt实现相关推荐

  1. C语言三路基数快排multikey quick sort算法(附完整源码)

    三路基数快排multikey quick sort 三路基数快排multikey quick sort算法的完整源码(定义,实现,main函数测试) 三路基数快排multikey quick sort ...

  2. php快排,网址快排 快速排名软件 thinkphp快排源码 网站快排程序 百度排名

    网址快排快速排名软件thinkphp快排源码网站快排程序百度排名 thinkphp快排源码 会员自助可以注册添加网站进行操作 根据快排系统平台的基本原理看,要做到被逐渐访问必须是该关键词已经有排名在百 ...

  3. 先贴上代码:Random快排,快排的非递归实现

    设要排序的数组是A[0]--A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为主元,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是, ...

  4. 分治法:快速排序,3种划分方式,随机化快排,快排快,还是归并排序快?

    快速排序不同于之前了解的分治,他是通过一系列操作划分得到子问题,不同之前的划分子问题很简单,划分子问题的过程也是解决问题的过程 我们通常划分子问题尽量保持均衡,而快排缺无法保持均衡 快排第一种划分子问 ...

  5. 非递归的方法写快排java_快排的最差情况以及快排平均复杂度的计算

    最近突然讨论了这两个问题,有点忘记了,记录了一下网上的比较好的说法,参见Reference 快排的相关知识请参考排序总结 快排的最差情况以及如何避免 首先,快排的最差情况什么时候发生? 1. 已排序 ...

  6. 快速排序 详解(快速排序 双路快排 三路快排)

    注:内容,图片来自于慕课网liuyubobobo老师的课程.  官方代码链接:https://github.com/liuyubobobo/Play-with-Algorithms 快速排序 快速排序 ...

  7. 10.经典快排和快排加速

    随机快速排序的细节和复杂度分析 可以用荷兰国旗问题来改进快速排序,时间复杂度0(N*logN),额外空间复杂度O(logN) 经典快排 从数列中随机挑出一个元素作为基准,比如将一个数组的最后一个元素x ...

  8. 【排序算法】插入、选择、堆排、快排、归并、计数

    一.插入排序 insertSort 1.实现 2.性能分析 3.折半插入排序(了解) 二.希尔排序 ShellSort 1.原理 2.实现 3.性能分析 三.选择排序 selectSort 1.原理 ...

  9. java快排(java快排函数)

    java培训机构排名动力节点排第几? 没有排名,在我心里他是第一,现在都做了10年了,我15年就毕业了,一转眼过去四年了,学校的课程还是跟以前一样每隔一段时间就更新,这段时间的架构师课程对我帮助就很大 ...

最新文章

  1. 数据库MySQL关系模型之基本概念
  2. java获得当前文件路径
  3. SVN禁止提交部分文件
  4. 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源
  5. mysql 存储过程 用户变量值_mysql:用户变量、系统变量、局部变量(存储过程中的)...
  6. (六)使用Coral USB Accelerator在Raspberry Pi上部署YOLOv5模型
  7. Redis应用场景一
  8. python是什么课程-教你python中什么是集合(一)
  9. win10安装pytorch很慢,如何解决?
  10. VS2010高级编程
  11. 信度spss怎么做_毕业季:毕业论文利用spss做信度分析步骤详解
  12. #SVN Skipped ‘xxx‘ -- Node remains in conflict 错误的解决办法#
  13. win7计算机u盘不显示盘符,U盘不显示磁盘盘符的解决方法
  14. 自定义Teams会议录像提示
  15. 获取frame 标签里#documents里面的内容
  16. Impala 三大组件:Impala Daemon, Impala Statestore, Impala Catelog
  17. android播放mp3方法,Android MediaPlayer 播放音频的方式
  18. /proc/cpuinfo 里的 CPU flags
  19. 直流通路下共射、共集、共基放大电路分析
  20. dell 1u服务器型号,戴尔_PowerEdge R240_1U机架式服务器_小型企业服务器选购 | Dell 中国大陆...

热门文章

  1. 前端、后端、学习网址
  2. 16届智能车竞赛单车拉力国二经验分享
  3. Iphone手机被偷了 我是如何自保和尝试找回的
  4. ITOM(IT运维管理软件)
  5. blackbox_exporter的使用
  6. 德国的共享杯,共享碗--还有什么不能共享?
  7. 加密视频(java加密视频)
  8. 计算机网络自顶向下方法 第三章 作业习题答案
  9. GPS卫星的导航电文和卫星信号
  10. Python 绘制遥感数字高程影像(DEM)