认知算法(五)

简介: 认知算法(五),一起来学习吧。

嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲认识算法,请一起学习吧。

一、桶排序

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:

1.在额外空间充足的情况下,尽量增大桶的数量
2.使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中
同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。

  1. 什么时候最快

当输入的数据可以均匀的分配到每一个桶中。

  1. 什么时候最慢

当输入的数据被分配到了同一个桶中。

二、代码实现

include

include#include<

vector>
使用命名空间std;
常量整数 BUCKET_NUM=10;

structListNode{explicitListNode(inti=0):mData(i),mNext(NULL){
}
ListNode*mNext;
intmData;
};

ListNodeinsert(ListNodehead,intval){
ListNode dummyNode;
ListNode*newNode=newListNode(val);
ListNodepre,curr;
虚拟节点。m下一个=头;
pre=&dummyNode;
curr=head;
而(空!=curr&&curr->mData<=val){
pre=curr;
curr=curr->mNext;
}
newNode->mNext=curr;
pre->mNext=newNode;
返回虚拟节点。mNext;
}

ListNodeMerge(ListNodehead1,ListNode*head2){
ListNode dummyNode;
ListNode*dummy=&dummyNode;
而(空!=头1&&空!=head2){
if(head1->mData<=head2->mData){
dummy->mNext=head1;
头1=头1->m下一个;
}else{
dummy->mNext=head2;
头2=头2->m下一个;
}
dummy=dummy->mNext;
}
if(NULL!=头1)假人->m下一个=头1;
如果(空!=head2)dummy->mNext=head2;

返回虚拟节点。mNext;
}

voidBucketSort(int n,intarr[]){
vector<ListNode>buckets(BUCKET_NUM,(ListNode)(0));
for(inti=0;i<n;++i){
intindex=arr[i]/BUCKET_NUM;
ListNode*head=buckets。at(index);
桶。at(index)=insert(head,arr[i]);
}
ListNode*head=buckets.在(0);
for(inti=1;i<BUCKET_NUM;++i){
head=Merge(head,buckets.在(i));
}
for(inti=0;i<n;++i){
arr[i]=head->mData;
头=头->mNext;

    }

}

相关文章
Postman 学习打卡: 如何使用Postman 发送请求?
大家好,我是阿萨。 今天继上一期的阿萨聊测试:Postman 的界面功能介绍之后。我们已经大概知道了Postman界面上的功能了。今天阿萨带大家发送几个HTTP请求看看。
351 0
Postman 学习打卡: 如何使用Postman 发送请求?
|
数据采集 PyTorch 数据处理
从DETR backbone 的NestedTensor 到DataLoader, Sampler,collate_fn,再到DETR transformer
从DETR backbone 的NestedTensor 到DataLoader, Sampler,collate_fn,再到DETR transformer
264 0
|
编解码 安全 Cloud Native
DevSecOps之应用安全测试工具及选型
随着越来越多的应用安全测试工具的出现,信息技术(IT)领导、开发人员和工程师可能会感到困惑——不知道哪些工具可以解决哪些问题。
337 1
|
敏捷开发 运维 供应链
构建安全软件开发:DevSecOps助你一臂之力!
DevSecOps — 在不影响敏捷性的前提下,将安全充分融入到SDLC的所有环节中 SDLC—软件交付生命周期 SCA—软件组成分析-用于识别和检测软件中使用的开源/第三方组件的已知安全漏洞 SAST—静态分析安全测试 DAS—动态分析安全测试 IAST—交互式分析安全测试 SBOM— 在这里特指软件中使用开源组件的完整信息列表
329 0
|
9月前
|
安全 Cloud Native Java
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)(上)
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)
111 2
|
Cloud Native 安全 搜索推荐
都说DevOps落地难,到底难在哪里?也许你还没找到套路
当你打开这篇文章的时候,也许你也在为DevOps的落地而苦恼,也许你的组织正在尝试DevOps转型,作为一线的实践者,说说我对这个“落地难”的看法,欢迎交流不同看法~
139 0
|
安全 Java 关系型数据库
SonarQube之采购选型参考
SonarQube是DevOps实践中主流的一款质量内建工具,过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。 通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar
412 0
|
机器学习/深度学习 存储 并行计算
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
626 0
|
机器学习/深度学习 人工智能 自然语言处理
多模态如何自监督?爱丁堡等最新「自监督多模态学习」综述:目标函数、数据对齐和模型架构
多模态如何自监督?爱丁堡等最新「自监督多模态学习」综述:目标函数、数据对齐和模型架构
843 0
|
9月前
|
安全 Devops Java
你以为搞个流水线每天跑,团队就在使用CI/CD实践了?
在实践中,很多团队对于DevOps 流水线没有很透彻的理解,要不就创建一大堆流水线,要不就一个流水线通吃。实际上,流水线的设计和写代码一样,需要基于“业务场景”进行一定的设计编排,特别是很多通过“开源工具”搭建的流水线,更需要如此(商业的一体化平台大部分已经把设计思想融入自己产品里了)。 • 流水线的设计与分支策略有关 • 流水线的设计与研发活动有关 清晰的代码结构,标准的环境配置,原子化的流水线任务编排,再加上团队的协作纪律,和持续优化的动作,才是真正的践行CI/CD实践
366 4

热门文章

最新文章