认知算法(五)

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

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

一、桶排序

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

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;

    }

}

相关文章
|
Java 开发者
自定义jsp标签----实战篇1
自定义jsp标签----实战篇1
176 0
|
4月前
|
监控 数据可视化 数据处理
微信养号脚本,全自动插件,AUTOJS开发版
这是一套自动化微信养号工具,包含主脚本`wechat_auto.js`与配置文件`config.json`。主脚本实现自动浏览朋友圈、随机阅读订阅号文章及搜索指定公众号三大功能,支持自定义滚动次数、阅读时长等参数。代码通过随机化操作间隔模拟真实用户行为,具备完善的错误处理和日志记录功能。配套UI模块提供可视化操作界面,可实时监控任务状态与运行日志,便于调整参数设置。控制器部分扩展了批量数据处理能力,如学生信息的增删改查操作,适用于多场景应用。下载地址:https://www.pan38.com/share.php?code=n6cPZ 提取码:8888(仅供学习参考)。
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
511 5
|
机器学习/深度学习 人工智能 自然语言处理
AI:塑造未来的技术力量
人工智能(AI)正迅猛变革世界,触及生活与产业各层面。AI通过计算机程序模拟人类智能,涵盖机器学习、自然语言处理等技术。其在医疗健康、自动驾驶、金融科技、智能家居领域的应用日益广泛,既促进经济转型,又引发就业、伦理及隐私等问题。未来,AI不仅是工具,更是人类的协作伙伴,但同时也需建立相应的伦理法律框架,确保技术发展惠及所有人。
Postman 学习打卡: 如何使用Postman 发送请求?
大家好,我是阿萨。 今天继上一期的阿萨聊测试:Postman 的界面功能介绍之后。我们已经大概知道了Postman界面上的功能了。今天阿萨带大家发送几个HTTP请求看看。
467 0
Postman 学习打卡: 如何使用Postman 发送请求?
|
Python 容器
Python所有的内置函数 , 都帮你整理好了!(一)
Python所有的内置函数 , 都帮你整理好了!
|
存储 Java 关系型数据库
Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你
Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你
|
测试技术
【技术贴】7-zip 7z关联右键菜单后右键不弹出菜单的解决办法
解决7z,7zip右键菜单 失效 右键菜单 无法弹出右键菜单 不正常 右键菜单 sb等各种疑难杂症。   1.首先先去7z的选项里面把右键关联给设置了。 用的好好的7z,正吃着火锅唱着歌忽然发现右键单文件不能弹出压缩菜单,很是郁闷,两个月了也一直将就着。
2995 0
|
5天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。