| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 计数排序的简单总结 -> 正文阅读 |
|
[数据结构与算法]计数排序的简单总结 |
计数排序不发生比较,较为节约时间,但较为耗费空间,其平均时间复杂度:o(n+k)(平方)、空间复杂度:o(k); 计数排序是稳定排序、外部排序; 局限性在于需要原数组集中在一定范围内,否则该算法极占空间; 动图如下: 算法要注意的是优化后的代码如何写。 3个步骤如下: //第0步 找最大值和最小值 1.算法需要新建一个数组cnt[d],其中d为数组中的“最大值减最小值+1”,在c语言中由于数组下标不能为变量,所以要用到calloc函数为cnt申请空间(代码见后)。 2.用cnt[]数组计数; 3.用双重嵌套循环对原数组赋值。 优化方案: 找到原数组的最大和最小值(有时算法题目中会直接要求你输入有多少个数组cnt的下标); 代码细节: 对每个cnt下标计数时(即cnt[xx]++时),需要xx为"原数组元素-min",就是要减去偏移量; 在第三步的赋值时要在i上加上一个偏移量; 对于洛谷P1271运用计数排序的代码如下:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:51:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |