学习完优先队列,发现一种新的排序算法,程序很简单,就是first in,largest out或first in ,least out

优先队列这个在#include<queue>中,priority_queue。默认情况下是largest out,加入greater<T>就可以变成least out。

上代码:

int main()
{int a[]={3,5,9,6,2,45,56,4,5,36,85,25,5,2,25,78,8,9,3,123,4,15,88};int len=sizeof(a)/sizeof(a[0]);//example-1priority_queue<int>qi;clock_t start=clock();//used to record the time for calculation the time efficiency of this algorithmfor(int i=0;i<sizeof(a)/sizeof(a[0]);i++)qi.push(a[i]);for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){cout<<qi.top()<<" ";qi.pop();}
//50-67行也是一种排序的算法,顺序默认是由大到小,就是优先队列的push和popcout<<endl;clock_t end=clock();cout<<static_cast<double>(end-start)/CLOCKS_PER_SEC*1000<<endl;cout<<endl;//example-2priority_queue<int,vector<int>,greater<int>>q2;//由小到大顺序输出for(int i=0;i<len;i++)q2.push(a[i]);for(int i=0;i<len;i++){cout<<q2.top()<<" ";q2.pop();}cout<<endl;

时间复杂度大概是O((3n+n^2)/2

空间复杂度求教各位大神了。关键是代码简单,容易理解,基于<queue>的操作

下面是fast sort排序代码:

#include<iostream>
#include<chrono>
#include<time.h>
using namespace std;
void Qsort(int a[],int low,int high)//快速排序算法
{if(low>=high) return;int first=low;int last=high;int key=a[first];while(first<last){while(first<last&& a[last]>=key){--last;}while(first<last && a[first]<=key){++first;}a[last]=a[first];}a[first]=key;Qsort(a,low,first-1);//递归,这样可以并行计算Qsort(a,first+1,high);//递归
}int main()
{int a[]={3,5,9,6,2,45,56,4,5,36,85,25,5,2,25,78,8,9,3,123,4,15,88};clock_t start=clock();Qsort(a,0,sizeof(a)/sizeof(a[0])-1);for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){cout<<a[i]<<" ";}cout<<endl;clock_t end=clock();cout<<static_cast<double>(end-start)/CLOCKS_PER_SEC*1000<<endl;return 0;
}

经过测试,两种算法运行的时间都是2ms。

接下来插入一张表:

常用算法的时间复杂度

一种新的排序算法,基于优先队列相关推荐

  1. access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法

    排序算法 回顾 我们前面已经介绍了 3 种最常见的排序算法: java 实现冒泡排序讲解 QuickSort 快速排序到底快在哪里? SelectionSort 选择排序算法详解(java 实现) 然 ...

  2. 漫画:三种 “奇葩” 的排序算法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 在算法的世界里,有许多高效率的排序算法,比如快速排序.归并排序.桶 ...

  3. 视觉直观感受 7 种常用的排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较 ...

  4. 7 种常用的排序算法直观感受

    1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序 ...

  5. 视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  6. 几种常用的排序算法之JavaScript实现

    文章目录 插入排序 二分插入排序 选择排序 选择排序 冒泡排序 快速排序 堆排序 归并排序 桶排序 计数排序 插入排序 <html> <script> /* 1)算法简介插入排 ...

  7. 通过视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  8. 几种重要的排序算法——交换排序

    交换排序 所谓交换,是指根据序列中两个关键字比较的结果来对换这两个关键字在序列中的位置.交换排序本文介绍两种,冒泡排序(bubble sort)和快速排序. 冒泡排序 排序思路 每次比较两个相邻的元素 ...

  9. 数据结构几种常见的排序算法

    学习过经典的冒泡排序算法后,我们将继续深入学习,了解更多算法排序 插入排序 直接插入排序 直接插入排序其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,指导所有记录插 ...

最新文章

  1. ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
  2. Java线程的生命周期及线程的几种状态
  3. netty socket超时设置_Netty 学习和进阶策略
  4. STM32开发 -- UART应用层通信协议分析
  5. 访问网络计算机的盘符,win7系统下如何禁止访问指定盘符保护电脑安全
  6. python类中的函数_python类中的函数问题
  7. python函数示例_使用Python中的示例的input()函数
  8. 计算机的硬件技能,计算机的最基础——软硬件
  9. 机器人码垛搬运编程程序_码垛机器人市场进一步扩张,解放人力搬运跑不了了...
  10. python日常能做什么-Python除了做AI、还能干啥?
  11. Hive from_unixtime函数入门
  12. 电脑运行很慢怎么办_为什么电脑用久了,就算重新安装系统也会变得很慢?
  13. 计算机C盘空间减少,为何我的C盘空间突然减少好几个G?
  14. 花几分钟轻松搞定快速排序算法
  15. EXCEL学会两个函数你能打败90%的人,countifs和vlookup
  16. 迪士尼源码下载站_如何下载迪士尼+电影和电视节目以离线观看
  17. flash存储器原理及作用是什么?
  18. Win8下安装配置Docker ToolBox并制作镜像配置Handoop集群
  19. mysql按小时sum()求和_Mysql按周,按月,按日,按小时分组统计数据
  20. 2022年1024程序员节随笔

热门文章

  1. 如何用纯 CSS 创作一组昂首阔步的圆点
  2. Python 萌新 - 花10分钟学爬虫
  3. mysql查询,left join(求并集),where(求交集)
  4. 穹顶之下 众信金融邀您共植树助环保
  5. 什么才是年轻人需要的手机?看完OPPO R11就有了答案!
  6. ThinkPHP3快速入门教程二:数据CURD
  7. Window 7下给Rails3.1安装Rmagick
  8. ARM上的Bootloader的具体实现1071098736
  9. MATLAB 二脉冲对消、重频参差滤波器设计仿真
  10. 华为机试HJ54:表达式求值