快排,堆排序,基数排序手写记录

2024-06-14 19:18

本文主要是介绍快排,堆排序,基数排序手写记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

闲来无事,手写一遍三种排序。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>using namespace std;//快排
void quick_sort(int v[],int s,int e)
{if (s>=e)return ;int key = v[s];int i=s;int t=e;while (i<t){while (i<t && v[t] >= key)t--;v[i] = v[t];while (i<t && v[i] <=key)i++;v[t] = v[i];}v[i] = key;quick_sort(v,s,i-1);quick_sort(v,t+1,e);
}//堆排序
void adjust(int v[],int i,int n)
{while (i*2+1<=n){int next=i*2+1;if (i*2+2<=n && v[i*2+2]>v[i*2+1])next=i*2+2;if (v[i]<v[next]){int t=v[i];v[i]=v[next];v[next]=t;i=next;}elsebreak;}return ;
}void heap_sort(int v[],int n)
{for (int i=(n-1)/2;i>=0;i--)adjust(v,i,n);for (int i=0;i<=n;i++){int t=v[0];v[0]=v[n-i];v[n-i]=t;adjust(v,0,n-i-1);}
}//基数排序
int maxd(int v[],int n)
{int d=1;int m=1;for (int i=0;i<=n;i++){while (v[i]/m>=n){m*=10;d++;}}return d;
}void radix_sort(int v[],int n)
{int d=maxd(v,n);int p=1;vector <int> mv[10];while (d--){for (int i=0;i<n;i++){int t=((v[i]/p)%10);mv[t].push_back(v[i]);}int s=0;for (int i=0;i<=9;i++){for (int t=0;t<mv[i].size();t++){v[s++]=mv[i][t];}mv[i].clear();}p*=10;}
}int main()
{int v[10];for (int i=0;i<10;i++)cin>>v[i];//quick_sort(v,0,9);//heap_sort(v,9);//radix_sort(v,10);for (int i=0;i<10;i++)cout<<v[i]<<" ";cout<<endl;
}


这篇关于快排,堆排序,基数排序手写记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061291

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

19.手写Spring AOP

1.Spring AOP顶层设计 2.Spring AOP执行流程 下面是代码实现 3.在 application.properties中增加如下自定义配置: #托管的类扫描包路径#scanPackage=com.gupaoedu.vip.demotemplateRoot=layouts#切面表达式expression#pointCut=public .* com.gupaoedu

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

记录AS混淆代码模板

开启混淆得先在build.gradle文件中把 minifyEnabled false改成true,以及shrinkResources true//去除无用的resource文件 这些是写在proguard-rules.pro文件内的 指定代码的压缩级别 -optimizationpasses 5 包明不混合大小写 -dontusemixedcaseclassnames 不去忽略非公共

数控系统资料记录

数控技术:数控系统刀补功能的软件实现及其仿真--数控仿真程序开发实战 https://github.com/mai4567/CNC 下载编译报错:error: src/dxflib.a: 没有那个文件或目录: 解决:下载dxflibhttps://www.ribbonsoft.com/en/dxflib-downloads,下载完后编译,编译后得到libdxflib.a,替换掉项目makefi

pixel_link记录

export PYTHONPATH=/path2to/pixel_link/pylib/src:$PYTHONPATH   https://blog.csdn.net/northeastsqure/article/details/83655200   https://blog.csdn.net/u011440558/article/details/78606662   报错: All

神经网络第四篇:推理处理之手写数字识别

到目前为止,我们已经介绍完了神经网络的基本结构,现在用一个图像识别示例对前面的知识作整体的总结。本专题知识点如下: MNIST数据集图像数据转图像神经网络的推理处理批处理  MNIST数据集          mnist数据图像 MNIST数据集由0到9的数字图像构成。像素取值在0到255之间。每个图像数据都相应地标有“7”、“2”、“1”等数字标签。MNIST数据集中,

nginx问题记录以及解决方法

问题描述: 打开多个nginx.exe 结果在任务管理器中不能结束该进程 解决办法: 以管理员的身份运行cmd 1、查看所有nginx.exe 进程 tasklist /fi "imagename eq nginx.exe" 2、结束这些进程 taskkill /fi "imagename eq nginx.exe" /f 问题描述: 配置前端项目路径然后就直接看本地项目路径的属