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

织梦如何仿手机网站源码0基础的怎么转行互联网

织梦如何仿手机网站源码,0基础的怎么转行互联网,克拉玛依网站建设,齐齐哈尔网站建设排序 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 桶排序 根据元素的取值范围,创建多个桶, 每个桶代表一个区间范围 创建桶的数量和范围需要尽可能保证元素能够被均匀分布 接下来将元素放进对应的桶中,分别对每个桶中…

排序

  • 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例)

桶排序

  • 根据元素的取值范围,创建多个桶, 每个桶代表一个区间范围
    • 创建桶的数量和范围需要尽可能保证元素能够被均匀分布
  • 接下来将元素放进对应的桶中,分别对每个桶中的元素进行排序
    • 桶内采用的排序算法可自行决定
    • 均匀分布后,每个桶内元素数量不会很多
  • 最后,按顺序将桶里的元素取出就完成了排序
  • 桶排序用的并不多,主要体现在对于桶排序的应用: 计数排序基数排序
  • 核心思想
    • 基于最小值和最大值算出一个差值,基于差值确定桶的数量和范围
    • 之后遍历数组中的每个元素,来分配到不同的桶中
    • 对每一个桶进行单独的排序
    • 最后整合所有的桶,即可

算法实现

1 )定义桶数,均匀分布

// 获取当前在第几个桶里
function getIndex(period, currentDist) {if (currentDist <= period) return 0;return Math.floor(currentDist / period);
}// 桶排序 主函数 list 待排序数组, n是定义的桶数量
function bucketSort(list, n = 2) {// 计算最大值和最小值const max = Math.max.apply(null, list);const min = Math.min.apply(null, list);const dist = max - min; // 最大值和最小值两者差距let buckets = []; // 用于存放多个桶的总数组// n个桶, 每个桶内存放范围 dist / n 每个桶的间隔const period = Math.ceil(dist / n);// 将列表中的数据分配到不同的桶里list.forEach((current) => {const d = current - min; // 当前与最小值的差距,用于计算当前数据应该填充在哪个桶内const index = getIndex(period, d); // 基于桶数和当前值,算出应该存放到第几个桶内// 基于 index 来填充到对应的桶内!buckets[index] ? (buckets[index] = [current]) : buckets[index].push(current);});// 对 buckets 中的每个桶进行排序buckets.map((bucket) => {bucket.sort((a,b) => a - b); // 这个使用默认的排序,其实内部可以使用任意的排序算法return bucket;});// 对 buckets 中的每个桶进行合并 (拍平)buckets = buckets.toString().split(',');return buckets.map(item => item / 1);
}const list = [102,103,108,107,101,102,102,102,107,103,109,108,102,101,104,102,104,106,109,102];
const result = bucketSort(list, 5);
console.log(result); // [101, 101, 102, 102, 102, 102, 102, 102, 102, 103, 103, 104, 104, 106, 107, 107, 108, 108, 109, 109]

总结

  • 桶排序的时间复杂度 在 O(n) ~ O( n 2 n^2 n2)
  • 普通桶排序并不普遍应用是拆分为桶后,在每个桶内还需要排序,意义就不大了
    • 而且要考虑每个桶内用什么样的数据结构来存储(考虑到内部排序)
      • 如果还用数组就极大浪费了空间(需使用最大的空间, 不同语言有区别)
      • 一般可以使用链表,但是对链表排序又开始麻烦了
    • 桶排序优化空间,时间上就会增加;优化时间空间上又会增多, 取一个时间和空间的平衡
  • buckets.map 基本是常数级别,这里实际上不怎么会消耗时间, 具体的sort算法可以使用任意的排序算法实现
  • 关于怎么处理和分配桶,上述算法基于用户自行填入的桶数,来均匀处理, 也可传入所有桶的范围分布列表
  • 那算法的细节实现就会不一样,但基本思想是一致的
  • 虽然上述算法意义不大, 但是桶排序的意义在于其思想:分而治之, 分配处理, 桶作为基本单位
  • 这个桶排序算法在开发中是比较重要的一种思想
http://www.yayakq.cn/news/184150/

相关文章:

  • 网站设计大作业logo设计公司 重庆艺点创意
  • 泰州网站建设制作工作室上海自助建站 上海网站建设
  • 什么是网站建设公司免费设计签名的软件
  • 开网络公司做网站挣钱吗wordpress缓存图片路径
  • 贸易网站设计杭州网站的建设
  • 搬家网站自适应简约风格网站建设
  • wordpress做link成都优化官网推广
  • 请人做网站要多少网页设计思路说明200字
  • 网站内容由什么组成部分组成wordpress 外贸 模板
  • 装修公司网站wordpress 模板无棣做网站
  • 网站怎样推广 优帮云仿制手机网站教程
  • 教育网站案例动画制作可以自学吗
  • wordpress站内信插件如何查询店名是否被注册
  • 金乡网站建设公司云南鼎润房地产开发有限公司网页设计
  • 东城做企业网站多少钱58同城的网站建设
  • 网上作业网站怎么做的网站怎么做百度百科
  • 那个网站做直播好wordpress循环分类
  • 建设银行粤通卡网站哪些网站可以免费申请域名
  • 好的手机端网站模板下载安装网站开发语言数据库有几种
  • h5用什么网站来做如何在百度上做免费推广
  • 做saas网站可行吗有专业做外贸的网站吗
  • 长沙移动网站网站平台建设多少钱
  • 网站优化排名易下拉排名电商网站开发要多少钱
  • 360免费自助建站能看人与动物做的网站
  • 西部数码成品网站排名优化哪家专业
  • 挖掘关键词爱站网太湖云建站网站建设
  • 苏州网站开发培训班wordpress多用户博客系统
  • 计算机毕业设计作品网站在线短链接生成网址
  • 域名申请好了怎么做网站上海互联网设计公司
  • 东莞网站建设设计公司广州市设计院官网