前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 桶排序实现 如何判断该放到哪个桶里

Java 桶排序实现 如何判断该放到哪个桶里

作者头像
heasy3
发布于 2020-08-02 04:52:16
发布于 2020-08-02 04:52:16
58600
代码可运行
举报
运行总次数:0
代码可运行

桶排序 类似于计数排序所创建的统计数组,桶排序需要创建若干个桶来协助排序。

每一个桶代表一个区间范围,里面可以承载一个或多个元素。

再分别对每个桶里的元素进行排序 最后对桶集合进行遍历输出的就是有序数组

体现了分治思想

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public void bucketSort(int[] array) {
        int size = array.length;
        int max = array[0], min = array[0];
        for (int i = 1; i < size; i++) {
            if (array[i] > max) max = array[i];
            if (array[i] < min) min = array[i];

        }
        int bucketNum = size;//桶的数量
        ArrayList<LinkedList<Integer>> bucketList = new ArrayList<>();
        for (int i = 0; i < bucketNum; i++) {
            bucketList.add(new LinkedList<>());
        }
        for (int i = 0; i < size; i++) {
            //放到哪个桶
            int num = (array[i] - min) * (bucketNum - 1) / (max - min);//重点
            bucketList.get(num).add(array[i]);
        }
        for (int i=0;i<bucketNum;i++){
            Collections.sort(bucketList.get(i));
        }
        int index = 0;
        for (int i=0;i<bucketNum;i++){
            System.out.println("桶"+i+"的元素数量:" + bucketList.get(i).size());
            for (int n:bucketList.get(i)){
                array[index++] = n;
            }
        }
    }

其中

int num = (array[i] - min) * (bucketNum - 1) / (max - min); =偏移量 * (桶数量-1) / 差值 =偏移量 / ( 差值 / (桶数量-1) )

而 差值/(桶数量-1) 就是求出每个桶区间长度的公式

也就是说 取具体放到哪个桶的索引值的方法就是拿该元素的偏移量除以区间长度

每个桶中使用了jdk的归并排序。区间划分的越细,即桶的数量越多,理论上分到每个桶中的元素就越少,桶内数据的排序就越简单,其时间复杂度就越接近于线性。

极端情况下,就是区间小到只有1,即桶内只存放一种元素,桶内的元素不再需要排序,因为它们都是相同的元素,这时桶排序差不多就和计数排序一样了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
textRNN/textCNN文本分类
textRNN指的是利用RNN循环神经网络解决文本分类问题,文本分类是自然语言处理的一个基本任务,试图推断出给定文本(句子、文档等)的标签或标签集合。
大数据技术与机器学习
2019/12/05
2.4K0
深度学习:文本CNN-textcnn
对于文本分类问题,常见的方法无非就是抽取文本的特征,比如使用doc2evc或者LDA模型将文本转换成一个固定维度的特征向量,然后在基于抽取的特征训练一个分类器。 然而研究证明,TextCnn在文本分类问题上有着更加卓越的表现。从直观上理解,TextCNN通过一维卷积来获取句子中n-gram的特征表示。TextCNN对文本浅层特征的抽取能力很强,在短文本领域如搜索、对话领域专注于意图分类时效果很好,应用广泛,且速度快,一般是首选;对长文本领域,TextCNN主要靠filter窗口抽取特征,在长距离建模方面能力受限,且对语序不敏感。
全栈程序员站长
2022/08/03
1.1K0
深度学习:文本CNN-textcnn
深入TextCNN(一)详述CNN及TextCNN原理
本文是本人所写的NLP基础任务——文本分类的【深入TextCNN】系列文章之一。【深入TextCNN】系列文章是结合PyTorch对TextCNN从理论到实战的详细教程。
zenRRan
2019/08/21
6.1K0
深入TextCNN(一)详述CNN及TextCNN原理
干货 | textRNN & textCNN的网络结构与代码实现!
本文来自社区作者 @mantch ,查看TA的更多动态,可在文末扫描社区名片进入。
AI研习社
2019/09/04
1.3K0
干货 | textRNN & textCNN的网络结构与代码实现!
【论文】Awesome Relation Classification Paper(关系分类)(PART II)
1. Relation Classification via Recurrent Neural Network(Zhang 2015)
zenRRan
2019/08/23
1K0
【论文】Awesome Relation Classification Paper(关系分类)(PART II)
BAT面试题42:深度学习解决大规模文本分类问题
深度学习最初在之所以在图像和语音取得巨大成功,一个很重要的原因是图像和语音原始数据是连续和稠密的,有局部相关性。应用深度学习解决大规模文本分类问题最重要的是解决文本表示,再利用CNN/RNN等网络结构自动获取特征表达能力,去掉繁杂的人工特征工程,端到端的解决问题。接下来会分别介绍
double
2019/03/07
1.9K0
一文读懂深度学习:从神经元到BERT
自然语言处理领域的殿堂标志 BERT 并非横空出世,背后有它的发展原理。今天,蚂蚁金服财富对话算法团队整理对比了深度学习模型在自然语言处理领域的发展历程。从简易的神经元到当前最复杂的BERT模型,深入浅出地介绍了深度学习在 NLP 领域进展,并结合工业界给出了未来的 NLP 的应用方向,相信读完这篇文章,你对深度学习的整体脉络会有更加深刻认识。
Ai学习的老章
2019/05/27
1.3K0
用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践
近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路、做法和部分实践的经验。
CreateAMind
2018/07/24
2K0
用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践
深度学习在NLP中的应用——TextCNN
卷积神经网络(Convolutional Neural Networks,CNN)的提出使得深度学习在计算机视觉领域得到了飞速的发展,大量基于CNN的算法模型被提出,同时深度学习算法在多个视觉领域实现了突破。最初在文本领域,主要使用的深度学习模型是RNN,LSTM等,既然CNN在图像领域得到广泛的应用,能否将CNN算法应用于文本分类中呢?Kim在2014的文章《Convolutional Neural Networks for Sentence Classification》成功将CNN模型应用在文本分类中。
felixzhao
2022/03/04
3.1K0
深度学习在NLP中的应用——TextCNN
【关于 NLP】百问百答
作者:杨夕、芙蕖、李玲、陈海顺、twilight、LeoLRH、JimmyDU、艾春辉、张永泰、金金金
杨夕
2021/03/11
1.1K0
【关于 NLP】百问百答
【论文】Awesome Relation Classification Paper(关系分类)(PART II)
上一篇【论文】Awesome Relation Extraction Paper(关系抽取)(PART I)介绍了一些关系抽取和关系分类方面的经典论文,主要是以CNN模型为主,今天我们来看看其他模型的表现吧~
AINLP
2019/08/15
6770
一文搞懂NLP | 简单句向量
过去,我们常见的就是从word vector到sentence vector,这种从小unit到大一级unit的方法,统一称为“composion”;这方面的工作有以下的1、2、3、4、5、6、7。
Datawhale
2019/07/08
2.1K0
斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/16
9480
斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络
中文短文本分类实例六-DCNN(A Convolutional Neural Network for Modelling Sentences)「建议收藏」
DCNN(A Convolutional Neural Network for Modelling Sentences)by NalKalchbrenner等,又是文本分类论文的一力作。”准确表达句子的语义是语言理解的核心”,通过学习机器学习和TextCNN,我们可以知道n-gram特征是NLP文本任务和句子表达的一种重要方法。TextCNN通过不同步长的卷积核(例如2,3,4,5,7)构建n-gram特征,以及最大池化(max-pooling)选择特征,再加上神经网络全局优化的思想,在文本分类任务中取得了不错的效果。
全栈程序员站长
2022/08/22
1K0
中文短文本分类实例六-DCNN(A Convolutional Neural Network for Modelling Sentences)「建议收藏」
如何到top5%?NLP文本分类和情感分析竞赛总结
笔者主要方向是KBQA,深深体会到竞赛是学习一个新领域最好的方式,这些比赛总的来说都属于文本分类领域,因此最近打算一起总结一下。
zenRRan
2019/11/19
1.6K0
【NLP实战】文本分类之 TextCNN
上面一篇文章中,我介绍了一篇利用RNN via Attention解决有毒评论文本分类问题。然而,在工业生产中,RNN、LSTM、GRU等循环神经网络不能并行计算,尽管研究者提出了一些其他的模型,如SRU等。CNN尽管效果在某些时候会稍逊RNN以及RNN的变体,但是CNN在速度方面却有着无可比拟的效果,且由于它的可并行性广被工业界喜爱。
yuquanle
2020/02/21
1.5K0
轻松搞懂Word2vec / FastText+BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention实现中英文情感分类
本人在大三期间做了一个关于“疫苗接种”主题的舆情分析,主要涉及的技术有:爬虫(微博和知乎评论)、数据清洗、文本特征提取、建立模型(SVM、BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention)、文本摘要等。
全栈程序员站长
2022/09/13
1.3K1
轻松搞懂Word2vec / FastText+BiLSTM、TextCNN、CNN+BiLSTM、BiLSTM+Attention实现中英文情感分类
基于深度学习的FAQ问答系统
| 导语 问答系统是信息检索的一种高级形式,能够更加准确地理解用户用自然语言提出的问题,并通过检索语料库、知识图谱或问答知识库返回简洁、准确的匹配答案。相较于搜索引擎,问答系统能更好地理解用户提问的真实意图, 进一步能更有效地满足用户的信息需求。问答系统是目前人工智能和自然语言处理领域中一个倍受关注并具有广泛发展前景的研究方向。 一、引言        问答系统处理的对象主要包括用户的问题以及答案。根据问题所属的知识领域,问答系统可分为面向限定域的问答系统、面向开放域的问答系统、以及面向常用问题集(Fre
腾讯知文实验室
2018/08/28
18.1K7
基于深度学习的FAQ问答系统
DNN/LSTM/Text-CNN情感分类实战与分析
最近把2014年Yoon Kim的《Convolutional Neural Networks for Sentence Classification》看了下,不得不说虽然Text-CNN思路比较简单,但确实能够在Sentence Classification上取得很好的效果。另外,之前@霍华德大神提了这个问题,链接如下:
zenRRan
2019/08/09
2.7K3
TextCNN文本分类(keras实现)「建议收藏」
深度学习模型在计算机视觉与语音识别方面取得了卓越的成就,在 NLP 领域也是可以的。将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似 n-gram 的关键信息),从而能够更好地捕捉局部相关性。
全栈程序员站长
2022/09/13
1.8K0
TextCNN文本分类(keras实现)「建议收藏」
推荐阅读
相关推荐
textRNN/textCNN文本分类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档