三亚兼职招聘信息网站软件开发文档国标

bicheng/2026/1/16 4:19:06/文章来源:
三亚兼职招聘信息网站,软件开发文档国标,免费的行情网站app大全下载,河南省建设银行网站目录 前言 基数排序 算法思想 ​编辑 算法示例 代码实现 1.队列queue.h 头文件 2.队列queue.c 源文件 3.主函数#xff08;radix_sort实现#xff09; 算法分析 前言 今天我想把前面未更新完的排序算法补充一下#xff0c;也就是基数排序的一种#xff0c;这是跟… 目录 前言 基数排序 算法思想 ​编辑 算法示例 代码实现 1.队列queue.h 头文件 2.队列queue.c 源文件  3.主函数radix_sort实现 算法分析 前言 今天我想把前面未更新完的排序算法补充一下也就是基数排序的一种这是跟计数排序一样类型的排序算法是属于非比较型的排序算法下面我们就一起来看看吧。 基数排序 基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机 (Tabulation Machine)上的贡献。它是这样实现的将所有待比较数值正整数统一为同样的数位长度数位较短的数前面补零。然后从最低位开始依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 基数排序的方式可以采用LSDLeast significant digital或MSDMost significant digitalLSD的排序方式由键值的最右边开始而MSD则相反由键值的最左边开始。 算法思想 上面这些理论思想看上去不太好理解那下面我举个例子去简单解释一下。 算法示例 比如有这么一个数组 array {53, 3, 542, 748, 14, 214, 154, 63, 616}  现在要去进行基数排序。 这里我们需要去创建一个长度为10的队列数组。Queue que[10]。然后这个队列数组作为根据基数储存数据的队列表。 这里我们对数组中的每一个数字去进行遍历然后进行按位求余最先是个位数得到的结果根据对应的队列数组下标去进行入队操作。基数分配结果如下所示: 第一次基数分配根据个位数分配 que[0]-----NULL que[1]-----NULL que[2]-----542-----NULL que[3]-----53------3-----63-----NULL que[4]-----14-----214-----154-----NULL que[5]-----NULL que[6]-----616-----NULL que[7]-----NULL que[8]-----748-----NULL que[9]-----NULL 然后根据第一次基数计算出的结果重新去排放这个数组对这个队列表进行遍历从上到下然后出队操作出队的结果放入到数组当中第一次数组更新结果如下 [ 542, 53, 3, 63, 14, 214, 154, 616, 748 ] 第二次基数分配根据十位数分配 在进行第二次分配的时候我们就根据上面已经跟新好了的数组去重新分配这一次我们就要去进一位来分配。结果如下 que[0]-----3-----NULL que[1]-----14-----214-----616-----NULL que[2]-----NULL que[3]-----NULL que[4]-----542-----748-----NULL que[5]-----53-----154-----NULL que[6]-----63-----NULL que[7]-----NULL que[8]-----NULL que[9]-----NULL 根据第二次基数计算出的结果重新去排放这个数组对这个队列表进行遍历从上到下然后出队操作出队的结果放入到数组当中第二次数组更新结果如下  [ 3, 14, 214 ,616, 542, 748, 53, 154, 63  ] 第三次基数分配根据百位数分配 我们接着取上面第二次分配的数组结果然后再次根据百位数求余数分配。结果如下 que[0]-----3-----14-----53-----63-----NULL que[1]-----154-----NULL que[2]-----214-----NULL que[3]-----NULL que[4]-----NULL que[5]-----542-----NULL que[6]-----616-----NULL que[7]-----748-----NULL que[8]-----NULL que[9]-----NULL 根据第三次基数计算出的结果重新去排放这个数组对这个队列表进行遍历从上到下然后出队操作出队的结果放入到数组当中第三次数组更新结果如下 [ 3, 14, 53, 63, 154, 214, 542, 616, 748 ] 这里我们可以看出已经拍好序了但是我建议还是继续去第四次分配直到全部的数字都在队列que[0]上。  第四次基数分配根据千位数分配 同样的这里我们把基数再进一位 que[0]-----3-----14-----53-----63-----154-----214-----542-----616-----748-----NULL que[1]-----NULL que[2]-----NULL que[3]-----NULL que[4]-----NULL que[5]-----NULL que[6]-----NULL que[7]-----NULL que[8]-----NULL que[9]-----NULL 此时的全部数字都在第一个队列上这时候就完成了排序只需要去对这个队列进行出队然后把数据重新放入到数组当中结果如下至此排序结束。 [ 3, 14, 53, 63, 154, 214, 542, 616, 748 ] 整体分配过程 假设r是排序码的基数d是排序码的位数每位的类型是KeyType待排序的文件采用带表头结点的链表表示类型为RadixList口为了便于实现记录的分配和收集建立r个链表表示的队列每个队列的类型为Queue 动态图 代码实现 1.队列queue.h 头文件 #pragma once #includestdlib.h//数据类型 typedef int Datatype;//节点 typedef struct node {Datatype data;struct node* next; }Lnode; //队列 typedef struct queue {int curnum;Lnode* front, * rear; }Queue;//队列初始化 void queue_init(Queue* que); //判空 int isEmpty(Queue q); //入队列 void enqueue(Queue *que, Datatype data); //出队列 Lnode* dequeue(Queue* que); //获取队头元素 Datatype get_headdata(Queue que); 2.队列queue.c 源文件  #includequeue.h #includeassert.h//队列初始化 void queue_init(Queue* que) {que-curnum 0;que-front que-rear NULL; }//创建一个节点 Lnode* create_node(Datatype data) {Lnode* node (Lnode*)malloc(sizeof(Lnode));assert(node);node-data data;node-next NULL;return node; }//判空 int isEmpty(Queue q) {return q.curnum 0; }//入队列 void enqueue(Queue *que,Datatype data) {Lnode* add create_node(data);if (isEmpty(*que)) {que-front que-rear add;que-curnum;}else {que-rear-next add;que-rear add;que-curnum;} }//出队列 Lnode* dequeue(Queue *que) {if (isEmpty(*que))return NULL;if (que-curnum 1)que-rear NULL;Lnode* de que-front;que-front de-next;que-curnum--;return de; }//获取队头元素 Datatype get_headdata(Queue que) {return que.front-data; } 3.主函数radix_sort实现 #includestdio.h #includestdlib.h #includequeue.hvoid radix_sort(int* arr, int n) {Queue que[10];//创建下标为0~9的队列for (int i 0; i 10; i) {queue_init(que[i]);//初始化队列}for (int i 0; i n; i) {enqueue(que[arr[i] % 10], arr[i]);//把数组个位数的数字依次入队}int k 0;int count 10;while (que[0].curnum ! n) {//如果数字里面全部的数据到第0个队列的时候就结束for (int i 0; i 10; i) {while (!isEmpty(que[i])) {Lnode* pop dequeue(que[i]);//出队arr[k] pop-data;//重新放置数组//释放空间free(pop);pop NULL;}}k 0;for (int i 0; i n; i) {//除以count取整此时指向进一位数字进行入队操作int x arr[i] / count;enqueue(que[x % 10], arr[i]);}count * 10;//} }int main() {int array[] { 123,0, 25,24,6,65,11,43,22,51 ,999 };printf(排序前:);for (int i 0; i sizeof(array) / sizeof(int); i) {printf(%d , array[i]);}//基数排序radix_sort(array, sizeof(array) / sizeof(int));printf(\n排序后);for (int i 0; i sizeof(array) / sizeof(int); i) {printf(%d , array[i]);} } 输出结果 算法分析 基数排序算法中时间主要耗费在修改指针上一趟排序的时间为O(rn)总共要进行d趟排序基数排序的时间复杂度T(n) O(d*(rn))采用链表存储排序时只修改链接指针,操作效率不受记录的信息量大小的影响排序中每个记录中增加了一个next字段(链表指针)还增加了一个queue 数组,故辅助空间S(n) O(nr基数排序是稳定的 以上就是本期的全部内容了我们下次见咯~ 分享一张壁纸

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板建站教程北京网络营销方案

目录 java 常量池详解一 静态常量池(Static Constant Pool)1.1 概述1.2 存储内容1.3 特点1.4 示例 二 运行时常量池(Runtime Constant Pool)2.1 概述2.2 存储内容2.3 特点2.4 示例 三 基础类型常量池(Primitive Type C…

昆明网站建设系统有哪些wordpress特效 插件推荐

文章目录 1、JTAG 基本原理1.1、JTAG接口包括以下几个信号:1.2、The Debug TAP State Machine (DBGTAPSM) 2、JTAG 的应用 1、JTAG 基本原理 JTAG是Joint Test Action Group的缩写,它是一种国际标准测试协议,主要用于芯片或印制电路板的边界…

深圳市住房建设局网站首页杭州比较有名的设计公司

问题:老年人心理健康维护与促进的原则为________、________、发展原则。 参考答案如图所示

北京网站建设大概多少钱制作网站要什么软件

一.IP核是什么 IP:知识产权,半导体产业中:在ASIC和FPGA中定义为预先设计好的电路功能模块。 在使用的时候其他用户可以直接调用IP核心。 二. 为什么要是有IP核 提高开发效率,减小设计和调试的时间,加速开发进程&am…

阿里云esc 可以做几个网站中国互联网协会副理事长

1.表达诚意,先认错再说:我知道,最近我们在Amazon.com上作为卖家的表现已经低于亚马逊和我们自己的质量标准。 2.清楚分明的格式:我们库存管理的混乱导致了延迟发货,更糟糕的是,物品无法使用。当延迟发货和…

企业形象型网站建设郴州网站设计

1. 从软件本身和它运行的典型工作负载来看,MySQL通常也更适合运行在廉价硬件上 2. 基本资源 2.1. CPU 2.2. 内存 2.3. 磁盘 2.4. 瓶颈 2.5. 网络资源 3. CPU 3.1. 最常见的瓶颈是CPU耗尽 3.2. 检查CPU使用率来确定工作负载是否受CPU限制 3.3. 低延迟&…

深圳建设局招标网站宁安市建设局网站

微信小程序页面传值为对象[Object Object]详解 1、先将传递的对象转化为JSON字符串拼接到url上2、在接受对象页面进行转译3、打印结果 1、先将传递的对象转化为JSON字符串拼接到url上 // info为对象 let stationInfo JSON.stringify(info) uni.navigateTo({url: /pages/statio…

企业自建网站劣势三亚网站建设哪家专业

简介: 本文在于根据自己的理解,将stm32f103外设按照功能分个类别,便于记忆。下面的几张图一定要熟悉,后期编写代码时能够快速找到想要的功能和对应的引脚。 我使用的工具链是:使用CubeMX完成keil5工程搭建和引脚初始化功能,然后用…

音乐影视网站建设方案wordpress多媒体权限

文章目录 一、给NodeMCU烧录固件1.1硬件准备1.2软件准备1.3AT固件下载1.4配置设置1.5开始烧录 二、给ESP8266-01S烧录固件2.1硬件准备2.2AT固件下载2.3连线2.4烧录配置 三、给ESP-12E/F/S单片烧录固件四、指令测试4.1HTTP测试4.2MQTT测试 我在使用ESP8266的时候遇到了一些问题&…

深圳网站建设最专audio for wordpress

文章目录 并行与分布式计算 第8章 并行计算模型8.1 并行算法基础8.1.1 并行算法的定义8.1.2并行算法的分类8.1.3算法的复杂度 8.2 并行计算模型8.2.1 PRAM (SIMD-SM)模型8.2.3 BSP (MIMD-DM)模型8.2.4LogP(MIMD-DM)模型 并行与分布式计算 第8章 并行计算…

陕西建设厅八大员官方网站网站开发文档怎么写

今天,让我们一起走进一个令人兴奋的科学领域——光学脑机接口,看看科学家们是如何通过这项技术,首次实现了对斑马鱼全脑活动的实时监控和控制。 从科幻到现实的一步之遥 想象一下,如果能够直接读取和影响生物大脑的神经活动&#…

荣耀手机官网网站wordpress怎么增加按钮

低代码这个概念在IT界应该是火了很久,在十年前就有低代码的概念。 在最初的时候,我们都是用高级语言或者脚本来开发页面或者应用,比如Java、C,前端会使用Vue、React等等。但是我们发现经常写的功能或者页面都是重复的,…

网站技术支持 新锐网络免费tk域名注册接口

sklearn模型的保存和加载API from sklearn.externals import joblib保存:joblib.dump(rf,‘test.pkl’)加载:estimator joblib.load(‘test.pkl’) 线性回归的模型保存加载案例 获取数据、划分数据集、标准化、预估器、保存模型、得出模型、模型评估 /…

南宁做网站服务商中山建设网站首页

全世界有3.14 % 的人已经关注了数据与算法之美最近这几年在世界各地突然吹起了一股全民写程序的风潮,连即将卸任的美国总统奥巴马都在写 JavaScript 了,但是身为一介靠写程序(以及在上班时间胡乱上网)来谋生的 developer&#xff…

网站询盘量常州网络推广哪家好

在做数据可视化网站时,有时需要用到多个图表,这时就需要对图表的样式做一个统一的设计使网站外观更整齐。具体步骤如下: 第一步:在echarts官网定制好主题,并下载js文件 第二步:在index.html文件引入该文件…

婚庆公司网站的设计与实现上海市住房和城乡建设部网站官网

git日历坐标系? 手动实现github活跃/贡献图 前言 在使用github或gitlab时,我们总能发现,我们一年内的活跃度能够通过一张图直观地展现出来,那么你是否好奇它是如何实现的,最近工作中也遇到这样类似的需求,刚开始打算…

网站建设范文h5开发游戏

Docker 一、Docker 简介1.1 Docker 概述1.2 Docker1.3 Docker 受欢迎的原因1.4 Docker 与 openstack(虚拟机) 的区别1.5 Docker核心概念 二、安装 Docker三、Docker 命令四、Docker 镜像操作五、Docker 容器操作 一、Docker 简介 1.1 Docker 概述 Dock…

dreamware做网站seo诊断的网络问题

目录 问:uni-app 组件库的解决方案?(xx 分钟) 必答​ 加分​ 深入​ 再深入​ 参考链接​ 问:在 uni-app 中,如何进行全局状态管理?请介绍一下你对 Vuex 和 Pinia 的了解。​ 必答​ 加…

原平的旅游网站怎么做的广开街网站建设公司

10月23日,上海外国语大学团委书记、创新创业与实践教育学院执行院长廖文其、俄罗斯东欧中亚学院党总支副书记郝佳、辅导员石朝天及学生代表等一行15人参观访问G60科创走廊俄罗斯院士创新基地(下简称:创新基地)。创新基地主任赵磊、俄罗斯中小企业联合会华…

html5网站模板免费下载wordpress视频插件有哪些

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。 如果…