c++各种排序算法实现
发布日期:2022-02-21 17:40:30 浏览次数:83 分类:技术文章

本文共 1909 字,大约阅读时间需要 6 分钟。

#include
#include
#include
#include
using namespace std;//含有跳跃式交换的排序算法,都是不稳定的算法//---------交换类-------//冒泡排序---稳定的排序、最好n、平均n^2、最坏n^2bool bubblesort(int a[],int n){ if(a==NULL) return false; bool btmp; for(int i=n-1;i>0;i--) { btmp=false; for(int j=0;j
0&&btmp) { btmp=false; for(j=0;j
a[j+1]) { int tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; btmp=true; aus=j; } } i=j; if(btmp==false) return true; } return true;}//快排----不稳定的排序、最好nlgn、平均nlgn、最坏n^2(不能够进行二分)void quicksort(int a[],int le,int rg){ if(le>=rg) return; int left=le; int right=rg; int mid=a[left]; while(left
=0&&tmp
=left;j--) a[j+1]=a[j]; a[j+1]=tmp; } return true;}//增量排序--不稳定的排序,最差复杂度n^2,最好nlgn,平均n1.3bool shellsort(int a[],int n){ if(a==NULL) return false; int d=n/2; while(d>=1) { for(int i=0;i
=i&&a[k]>tmp)///注意这里是k>i { a[k+d]=a[k]; k=k-d; } a[k+d]=tmp; } } d=d/2; } return true;}//-------选择类----//直接选择排序,时间复杂度最好n^2,平均n^2,最坏n^2//例如8* 3 5 4 8 3 1 9 并不稳定bool selectsort(int a[],int n){ if(a==NULL) return false; for(int i=0;i
a[dad]) { int tmp=a[son]; a[son]=a[dad]; a[dad]=tmp; dad=son; son=2*son+1; } else return; }}bool heapsort(int a[],int n){ if(a==NULL) return false; for(int i=(n/2)-1;i>=0;i--) adjustsort(a,i,n); for(int i=n-1;i>=0;i--) { int tmp=a[i]; a[i]=a[0]; a[0]=tmp; adjustsort(a,0,i); } return true;}//归并排序void merge(int a[],int le,int mid,int rg){ int l=le; int r=mid+1;// int tmp[rg-le+1]; vector
tmp; while(l<=mid&&r<=rg) { if(a[l]
tmp; merge(a,left,mid,right);}int main(){ int a[]={5,4,7,3,2,8,6,1}; int n=sizeof(a)/sizeof(int); //bool res=bubblesort(a,n); //bool res=bubblehigh(a,n); //quicksort(a,0,n-1); //bool res=insertsort(a,n); //bool res=halfsort(a,n); //bool res=shellsort(a,n); //bool res=selectsort(a,n); //bool res=heapsort(a,n); mergesort(a,0,n-1); cout<<"排序后结果:"; for(int i=0;i<8;i++) { cout<
<<" "; } cout<

还有: 桶排序和基数排序

效率比较:

转载地址:https://blog.csdn.net/weixin_40599276/article/details/100838430 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:写一个完整的memcpy,strcpy,strlen char *a = "aa"; char s[] = "123456789"; char d[] = "123"; st
下一篇:Netty | 01 - 服务器启动流程以及常用api笔记

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月05日 20时34分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java矩阵类_Java泛型——泛型矩阵类 2019-04-21
java车牌正则表达式_车牌正则表达式 2019-04-21
wordpress4.9.4 mysql_WordPress 将不再支持 PHP4 和 MySQL 4 2019-04-21
安卓是用java语言写的吗_android开发是用java语言吗? 2019-04-21
java 符号 t_java – 运算符”不能应用于’T’,’T’表示有界泛型类型 2019-04-21
用matlab写出信源熵,计算离散信源的熵matlab实现 2019-04-21
php表单yii2,Yii2创建表单(ActiveForm)方法详解 2019-04-21
php 程序授权机制,授权认证详细说明 2019-04-21
java 命令提示符,如何使用Java打开命令提示符并插入命令? 2019-04-21
IP/tzgm.php,LianjiaSpider/在售数量.ipynb at master · BerSerK/LianjiaSpider · GitHub 2019-04-21
linux移动文件的脚本,使用Linux脚本移动文件 2019-04-21
linux查看系统所有变量,Linux系统各指标命令 2019-04-21
linux打印机守护程序,linux下怎么编写守护程序呢? 2019-04-21
嵌入式linux 设置时间,time_clock控件应用,使用命令date -s 12:00:00手动设置时间后,时间就停住不走了,我在Ubuntu和嵌入式Linux平台都测试到了... 2019-04-21
linux 8086下编译,Ubuntu18.04/Linux下安装DosBox进行8086汇编 2019-04-21
linux监控windows,zabbix监控之linux及windows客户端安装配置 2019-04-21
linux中怎么卸载tree,Liunx系统命令中tree命令详解 2019-04-21
linux 网络音箱 混音6,Linux音频编程(三)混音器介绍 2019-04-21
node与mysql开源_node与mysql的相互使用————node+mysql 2019-04-21
python合并列表重新排序_python – 将两个已排序的列表合并为一个更大的排序列表... 2019-04-21