当前位置: 首页 > wzjs >正文

国土局网站建设方案汕头seo计费管理

国土局网站建设方案,汕头seo计费管理,常德网站开发公司,什么好的主题做网站文章目录 🐒个人主页🏅算法思维框架📖前言: 🎀计数排序 时间复杂度O(nk)🎇1. 算法步骤思想🎇2.动画实现🎇 3.代码实现 🎀桶排序🎇1. 算法步骤思想&#x1f38…

文章目录

  • 🐒个人主页
  • 🏅算法思维框架
    • 📖前言:
  • 🎀计数排序 时间复杂度O(n+k)
      • 🎇1. 算法步骤思想
      • 🎇2.动画实现
      • 🎇 3.代码实现
  • 🎀桶排序
      • 🎇1. 算法步骤思想
      • 🎇2、示意图
      • 🎇3.代码实现
  • 🎀基数排序 (RadixSort)
      • 🏨 基数排序 vs 计数排序 vs 桶排序
      • 🎇1. LSD算法步骤思想(按低位到高位排序)
      • 🎇 3.代码实现

🐒个人主页

🏅算法思维框架

📖前言:

本篇博客主要以介绍十大排序算法中的计数排序桶排序以及基数排序,有详细的图解、动画演示、良好的代码注释,帮助加深对这些算法的理解,进行查漏补缺~

🎀计数排序 时间复杂度O(n+k)

当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 O(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。
计数排序需要拿一个辅助数组来统计待排序数组中元素的数量,再将统计的结果从小到大回填到待排序数组中。

🎇1. 算法步骤思想

(1)找出待排序的数组中最大的元素
(2)统计数组中每个值为i的元素出现的次数,存入数组C的第i项
(3)对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)
(4)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1

在这里插入图片描述
在这里插入图片描述

🎇2.动画实现

在这里插入图片描述

🎇 3.代码实现

    //使用前提:arr【】中的元素介于【0,k】 k值不要太大,// 思路启示:如果元素值介于【-1000,1000】,可以创建一个【0,2000】的辅助数组下标0 对应 -1000平移一下,来统计。回填时再-1000就行了public void sort(int[] arr){if(arr==null||arr.length<2){return;}//利用哈希数组temp[]进行排序,将arr[]中的值作为temp[]的键进行存储,统计其出现的数量int maxVal=arr[0];for (int i = 1; i <arr.length ; i++) {//获取arr[]数组中的最大值maxVal=maxVal<arr[i]?arr[i]:maxVal;}int[] temp=new int[maxVal+1];//哈希数组--统计数量for (int i : arr) {temp[i]+=1;}//进行排序int index=0;for (int i = 0; i <temp.length ; i++) {int count=temp[i];if(count!=0){while (count>0){arr[index++]=i;count--;}}}}

🎀桶排序

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

• 在额外空间充足的情况下,尽量增大桶的数量
• 使用的映射函数能够将输入的 N个数据均匀的分配到 K 个桶中

同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。

  1. 什么时候最快? 当输入的数据可以均匀的分配到每一个桶中。
  2. 什么时候最慢? 当输入的数据被分配到了同一个桶中。

🎇1. 算法步骤思想

确定桶的个数,以及哪个元素放到哪一个桶里:
假设对介于[0,100)的元素进行排序,要分成十个桶,
【0-9】【10-19】【20-29】…【90-99】
对每一个桶单独排序,因为每个桶里面数据很少,所以排序很快

🎇2、示意图

在这里插入图片描述
🪀桶排序详解

🎇3.代码实现

 public void sort(int[] arr){if(arr==null||arr.length<2){return;}//思路:假设对介于[0,100)的元素进行排序,要分成十个桶,【0~9】【10~19】【20~29】...【90~99】List<Integer>[] bucket=new ArrayList[10];for (int i = 0; i <bucket.length ; i++) {bucket[i]=new ArrayList<>();//生成桶}//将元素放入桶内Arrays.stream(arr).boxed().forEach(item->{bucket[item/10].add(item);});//对每个桶进行排序,由于每个桶的元素很少,故排序很快,这里可以使用任意的排序算法,我先使用内置的库函数来代替任意排序算法了int index=0;//将元素存入arr的下标for (int i = 0; i <bucket.length ; i++) {Collections.sort(bucket[i]);//对每个桶进行排序//放入arr数组中for (int item : bucket[i]) {//拿到这个桶arr[index++]=item;}}}

🎀基数排序 (RadixSort)

原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序的方式可以采用 LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。
(不常用)MSD:先从高位开始进行排序,在每个关键字上,可采用计数排序
(常用)LSD:先从低位开始进行排序,在每个关键字上,可采用桶排序

🏨 基数排序 vs 计数排序 vs 桶排序

这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:

• 基数排序:根据键值的每位数字来分配桶;
• 计数排序:每个桶只存储单一键值;
• 桶排序:每个桶存储一定范围的数值;

🎇1. LSD算法步骤思想(按低位到高位排序)

分步图示说明:设有数组 array = {53, 3, 542, 748, 14, 214, 154, 63, 616},对其进行基数排序:

在这里插入图片描述

在上图中,首先将所有待比较数字统一为统一位数长度,接着从最低位开始,依次进行排序。

按照个位数进行排序。将结果回填到array[]中
按照十位数进行排序。将结果回填到array[]中
按照百位数进行排序。将结果回填到array[]中
排序后,数列就变成了一个有序序列。

🎇 3.代码实现

   //思路:基数排序是在桶排序的基础上进行了优化:// LSD从低位到高位进行的排序:// 原理是先找到数组最大值的位数,分成10个桶,先按照个位数进行桶排序,再进行回填,再按十位数进行桶排序,进行回填...直到按最高位进行排序,进行回填//【基于LSD排序方式实现的基数排序】public void sort(int[] arr){if(arr==null||arr.length<2){return;}//思路:先获取数组中最大值的个数int max=0;for (int i : arr) {//计算值的位数int digt=(i+"").length();max=max<digt?digt:max;}int dev=1;//获取个位,十位,百位...的上的数字for (int i = 0; i <max ; i++) {//进行桶排序List<Integer>[] bucket=new ArrayList[10];for (int j = 0; j < bucket.length; j++) {bucket[j]=new ArrayList<>();//创建桶}//放入桶进行排序for (int item : arr) {bucket[item/dev%10].add(item);}//进行排序+回填int index=0;for (int j = 0; j <bucket.length ; j++) {Collections.sort(bucket[j]);for (int item : bucket[j]) {arr[index++]=item;}}dev*=10;}}
http://www.dtcms.com/wzjs/468469.html

相关文章:

  • 旧域名怎么做新网站宁波seo整站优化软件
  • 制作图片的软件app有哪些北京seo推广服务
  • 定州哪里可以做网站合肥百度推广公司哪家好
  • 最牛的房地产网站建设如何网站推广
  • 济南做网站建网站公司广告牌
  • 怎么做网站关键词优化网站网络推广推广
  • 网站修改图片链接seo怎么做优化
  • 做电影类网站收入怎么样深圳网站建设专业乐云seo
  • 做公司网站怎么做网络营销手段有哪些
  • 网站建设总结中国世界排名
  • 中跃建设集团网站做小程序要多少钱
  • 湛江企业网站建设成都网站建设系统
  • 赣州公司做网站百度定位店铺位置怎么设置
  • 中企动力企业z云邮登陆谷歌seo综合查询
  • 淘宝网站750海报怎么做seo运营专员
  • 查询网站建设时间关键词分析工具网站
  • 网站建设实训个人总结专业排名优化工具
  • 网站前端程序制作开发应用商店关键词优化
  • 在制作网站前 不需要急于做的工作是软文推广收费
  • 商户如何做h5商城网站是什么意思市场调研报告怎么写的
  • 做网站需要注意的网站入口
  • 现在做网站开发吗做网站好的网站建设公司
  • wordpress演示站网站优化公司上海
  • 微信小程序前端开发工具甘肃seo网站
  • 网站后台视频营销推广活动方案
  • 乌鲁木做兼职的网站百度seo排名点击软件
  • 每日军事新闻下载安装如何优化网站排名
  • 网站的弹窗广告怎么做网络推广的方法
  • 科技创新小发明seo每日一帖
  • 蓝屏的钙 WordPress逆冬黑帽seo培训