【软件】[Qt\C++] 冒泡、希尔、堆排、基数、快排 5种排序Gui界面带对比——使用Qt实现
完整代码
https://github.com/gongfpp/sortsWithQt
成品(随机生成数字后全过了一遍)
一、 实验任务(实验题目、目的)
实现5种排序(冒泡、希尔、堆排、基数、快排),并对比时间效率
二、 任务分析
- 逐一实现各排序算法
- 设计主窗口与5个排序按键和一个总排序按键
- 设置各按钮槽函数
- 生成随机数据以供排序
- 设计数据输出
- 将排序算法和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实现相关推荐
- C语言三路基数快排multikey quick sort算法(附完整源码)
三路基数快排multikey quick sort 三路基数快排multikey quick sort算法的完整源码(定义,实现,main函数测试) 三路基数快排multikey quick sort ...
- php快排,网址快排 快速排名软件 thinkphp快排源码 网站快排程序 百度排名
网址快排快速排名软件thinkphp快排源码网站快排程序百度排名 thinkphp快排源码 会员自助可以注册添加网站进行操作 根据快排系统平台的基本原理看,要做到被逐渐访问必须是该关键词已经有排名在百 ...
- 先贴上代码:Random快排,快排的非递归实现
设要排序的数组是A[0]--A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为主元,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是, ...
- 分治法:快速排序,3种划分方式,随机化快排,快排快,还是归并排序快?
快速排序不同于之前了解的分治,他是通过一系列操作划分得到子问题,不同之前的划分子问题很简单,划分子问题的过程也是解决问题的过程 我们通常划分子问题尽量保持均衡,而快排缺无法保持均衡 快排第一种划分子问 ...
- 非递归的方法写快排java_快排的最差情况以及快排平均复杂度的计算
最近突然讨论了这两个问题,有点忘记了,记录了一下网上的比较好的说法,参见Reference 快排的相关知识请参考排序总结 快排的最差情况以及如何避免 首先,快排的最差情况什么时候发生? 1. 已排序 ...
- 快速排序 详解(快速排序 双路快排 三路快排)
注:内容,图片来自于慕课网liuyubobobo老师的课程. 官方代码链接:https://github.com/liuyubobobo/Play-with-Algorithms 快速排序 快速排序 ...
- 10.经典快排和快排加速
随机快速排序的细节和复杂度分析 可以用荷兰国旗问题来改进快速排序,时间复杂度0(N*logN),额外空间复杂度O(logN) 经典快排 从数列中随机挑出一个元素作为基准,比如将一个数组的最后一个元素x ...
- 【排序算法】插入、选择、堆排、快排、归并、计数
一.插入排序 insertSort 1.实现 2.性能分析 3.折半插入排序(了解) 二.希尔排序 ShellSort 1.原理 2.实现 3.性能分析 三.选择排序 selectSort 1.原理 ...
- java快排(java快排函数)
java培训机构排名动力节点排第几? 没有排名,在我心里他是第一,现在都做了10年了,我15年就毕业了,一转眼过去四年了,学校的课程还是跟以前一样每隔一段时间就更新,这段时间的架构师课程对我帮助就很大 ...
最新文章
- 数据库MySQL关系模型之基本概念
- java获得当前文件路径
- SVN禁止提交部分文件
- 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源
- mysql 存储过程 用户变量值_mysql:用户变量、系统变量、局部变量(存储过程中的)...
- (六)使用Coral USB Accelerator在Raspberry Pi上部署YOLOv5模型
- Redis应用场景一
- python是什么课程-教你python中什么是集合(一)
- win10安装pytorch很慢,如何解决?
- VS2010高级编程
- 信度spss怎么做_毕业季:毕业论文利用spss做信度分析步骤详解
- #SVN Skipped ‘xxx‘ -- Node remains in conflict 错误的解决办法#
- win7计算机u盘不显示盘符,U盘不显示磁盘盘符的解决方法
- 自定义Teams会议录像提示
- 获取frame 标签里#documents里面的内容
- Impala 三大组件:Impala Daemon, Impala Statestore, Impala Catelog
- android播放mp3方法,Android MediaPlayer 播放音频的方式
- /proc/cpuinfo 里的 CPU flags
- 直流通路下共射、共集、共基放大电路分析
- dell 1u服务器型号,戴尔_PowerEdge R240_1U机架式服务器_小型企业服务器选购 | Dell 中国大陆...