计数排序的实现

计数排序

计数排序是一个基于非比较的排序算法。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序、桶排序)。简单来说,就是其只能用于较集中的数据。

计数排序的具体过程如下:

然后根据 count 数组,将数据一个一个填入原数组中。

代码实现:

// 计数排序
void CountSort(int* a, int n)
{
	int max = a[0], min = a[0];

	for (int i = 1; i < n; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
		if (min > a[i])
		{
			min = a[i];
		}
	}

	//求出要开辟的数组的长度
	int range = max - min + 1;
	//使用calloc开辟并初始化count数组
	int* count = (int*)calloc(range, sizeof(int));

	for (int i = 0; i < n; i++)
	{
		count[a[i] - min]++;
	}

	int j = 0;
	for (int i = 0; i < range; i++)
	{
		while (count[i]--)
		{
			a[j++] = i + min;
		}
	}

	free(count);
	count = NULL;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vivado HW_SIO_GTGROUP、HW_SIO_IBERT

HW_SIO.GTGROUP 描述 GT组与硬件设备上的GT IO组相关&#xff0c;具有可用的数量 GT引脚和组由目标Xilinx FPGA确定。在Kintex-7 xc7k325部件上&#xff0c;用于 例如&#xff0c;有四个GT组&#xff0c;每个组包含四个差分GT引脚对。每个GT pin有自己的接收器hw_sio_rx和发射器…

如何免费获取云服务器

这几天刚入手了阿贝云的 “免费云服务器 ” &#xff0c;接下来给大家讲讲如何免费注册阿贝云的免费云服务器 如何获取免费云服务器 打开阿贝云官网&#xff0c;注册并认证 即可以领取免费云服务器 阿贝云地址&#xff1a;https://www.abeiyun.com/ 服务器优势 永久免费&…

【算法实战】每日一题:18.1并查集知识点讲解以及算法实战

1.题目 给定一个序列&#xff0c;通过n-1次相邻元素的合并操作&#xff0c;恢复原始序列。 2.涉及知识点 - 并查集 (Union-Find) 并查集 (Union-Find) 详解 概述 并查集&#xff08;Union-Find&#xff09;&#xff0c;也称为不相交集数据结构&#xff0c;用于处理一些不相…

华为支持手指关节手势的原理

华为的指关节手势有指关节截屏、指关节录屏、指关节区域截屏、指关节分屏等。该技术的实现是靠触控结合了其他一些传感器实现的。 华为的专利&#xff1a; 一种手势控制方法、装置、终端设备和存储介质——华为技术有限公司 专利中提到以往终端设备对于手势的识别都是基于位置和…

橘子叶子病害分类数据集38432张5类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;38432 分类类别数&#xff1a;5 类别名称:["Citrus_Canker_Diseases_L…

学生党蓝牙耳机推荐,四款高性价比机型推荐

对于正在寻找高性价比蓝牙耳机的学生党们来说&#xff0c;选择一款既符合预算又满足音质、舒适度与便携性要求的耳机至关重要&#xff0c;以下将为大家推荐四款备受好评的蓝牙耳机&#xff0c;它们不仅性价比高&#xff0c;而且各具特色&#xff0c;相信能够满足不同学生党的需…

定个小目标之刷LeetCode热题(12)

这是一道简单题&#xff0c;使用位运算中的异或运算即可&#xff0c;异或运算有以下性质&#xff1a; 1、任何数异或 0 结果仍然是原来的数&#xff0c;即 a⊕0a 2、任何数和其自身做异或运算&#xff0c;结果是 0 所以我们只需要让数组里的所有元素进行异或运算得到的结果就…

电脑ps缺少dll的多种解决方法,轻松搞定dll丢失问题

启动 Photoshop CC (20.0) 时&#xff0c;屏幕显示 Photoshop.exe - 系统错误对话框&#xff1a; 由于计算机中缺少 D3DCOMPILER_47.dll 而导致该程序无法启动。请尝试重新安装该程序以修复此问题。本文将针对这一问题进行详细的分析和解决方案的分享&#xff0c;帮助大家更好…

理解dispatch_async

Submits a block for asynchronous execution on a dispatch queue and returns immediately. 提交一个块以在调度队列上异步执行并立即返回。 code showing 以一个最简单的demo开始 // 创建一个同步队列 dispatch_queue_t syncQueue dispatch_queue_create("io.sqi.My…

6.结构体

目录 一、普通结构体&#xff08;struct&#xff09;1.1 说明1.2 举例1&#xff09;结构体定义及访问2&#xff09;结构体初化的简单写法3&#xff09;结构体更新语法 二、元组结构体&#xff08;tuple struct&#xff09;2.1 概念2.2 示例 三、类单元结构体&#xff08;unit-l…

程序猿大战Python——容器——字符串

字符串介绍 什么是Python容器 目标&#xff1a;了解Python容器是什么&#xff1f; 在现实生活中&#xff0c;我们知道容器是用来存放东西的&#xff0c;比如实验室里的烧杯等。 类似的&#xff0c;在Python中的容器是用来存放数据的。 与此同时&#xff0c;为了操作方便&…

Java毕业设计 基于springboot vue大学生助学贷款管理系统

Java毕业设计 基于springboot vue大学生助学贷款管理系统 SpringBoot 大学生助学贷款管理系统 功能介绍 学生 登录 注册 个人中心 修改密码 个人信息 助学贷款 申请贷款 放贷信息 还贷信息 公告资讯 学校 登录 注册 个人中心 修改密码 个人信息 助学贷款管理 申请贷款管理 公…

java:mybatis查询时自动添加tenantId和deleted查询条件

# 参考资料 https://blog.csdn.net/chenhz2284/article/details/139606486?spm1001.2014.3001.5502 # 示例代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>&l…

纳税信用评级:企业的“金字招牌”

在快速发展的市场经济中&#xff0c;企业的信用状况越来越成为其竞争力的重要组成部分。而在税务领域&#xff0c;纳税信用评级更是衡量一个企业是否诚信经营的重要指标。今天&#xff0c;就让我们一起来深入了解纳税信用评级的相关知识。 一、纳税信用评级是什么&#xff1f;…

Python中的钩子函数(hooks)介绍使用

什么是hook&#xff1f; 钩子函数&#xff0c;顾名思义&#xff0c;就是把我们自己实现的自定义函数在某一时刻挂接到目标挂载点上去执行。 1. hook函数&#xff0c;就是我们自己实现的函数&#xff0c;函数类型与挂载点匹配&#xff08;返回值&#xff0c;参数列表&#xff0…

Fake news detection: A survey of graph neural network methods

abstract 各种社交网络的出现产生了大量的数据。捕获、区分和过滤真假新闻的有效方法变得越来越重要&#xff0c;特别是在 COVID-19 大流行爆发之后。本研究对假新闻检测系统的图神经网络 (GNN) 的现状和挑战进行了多方面、系统的回顾&#xff0c;并概述了使用 GNN 实现假新闻…

C++STL初阶(4):初识vector

vector是一个类模版&#xff0c;是一个顺序容器&#xff0c;底层思维就是顺序表&#xff0c;而顺序表的本质就是一个可以改变size的数组。本篇基于string的学习基础&#xff0c;我们对vector进行一个大致的了解和学习 1.基本介绍 1. vector 是表示可变大小数组的序列容器&#…

老生常谈!程序员为什么要阅读源代码?

大家好&#xff0c;我是码农先森。 阅读源码这是一个老生常谈的话题了&#xff0c;但又是很多人想做又没有付出行动的事情。前段时间我研究了 Swoole 的源代码&#xff0c;并且输出了系列的源码分析文章「感兴趣的朋友可以翻阅以前的文章」。虽然这个过程很枯燥和艰难&#xf…

css font-family

知乎的font-family的设置理解 -apple-system, BlinkMacSystemFont 这两个值是为了确保在macOS和iOS系统上能够使用系统默认字体进行文本渲染。-apple-system特别为Safari浏览器设计&#xff0c;而BlinkMacSystemFont则主要针对基于Chromium的浏览器&#xff08;如Chrome&#…

【Linux】shell——条件判断test,各种运算符,expr

条件判断——test 真——0 假——1 test expression or [ expression ] 整数运算符 字符串运算符 -z 长度是否为0 -n 长度是否不为0 str1 str2 str1 ! str2 补 &&-->逻辑与&#xff0c;前面为真后面才会执行 || -->逻辑或&#xff0c;前面为假后面才…