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

网站设置默认首页/seo快速排名

网站设置默认首页,seo快速排名,百度小程序怎么做,制作视频网站违法吗目录 1. 原理 2. 代码实现 3. 性能分析 1. 原理 首先看一个题目,有n个数,取值范围是 0~n,写出一个排序算法,要求时间复杂度和空间复杂度都是O(n)的。 为了达到这种效果,这一篇将会介绍一种不基于比较的排序方法。这…

目录

1. 原理

2. 代码实现

3. 性能分析


1. 原理

首先看一个题目,有n个数,取值范围是 0~n,写出一个排序算法,要求时间复杂度和空间复杂度都是O(n)的。

为了达到这种效果,这一篇将会介绍一种不基于比较的排序方法。这种方法被称为计数排序。

计数排序的思路是这样的,对于每一个待排序元素a,如果知道了待排序数组中有多少个比它小的数,那么就可以直接知道在排序后的数组中 a 应该在什么位置上。比如,如果一个数组中有3个数是比a小的,那么,在排序后的数组里,a必然会出现在第4位。

现在问题转化成,对于待排序数组里的一个数,如何能快速知道比它小的数字有多少个。要解决这个问题,我们不能使用比较的办法,那样时间复杂度是无法降下来,只有换一个思路,以空间换时间。因为n个数的取值范围是 0~n,所以,不妨使用一个大小为 n 的数组来统计从0到n,每个数在待排序数组中出现的次数。这个数组类似于直方图数组,因为这种方式也被称做是基于统计的排序。直方图统计的思路简单清晰,在很多题目中都会有出现,一定要熟练掌握这种技巧。

强调:计数排序适合排序一组集中的数据。

2. 代码实现

    //计数排序public static void countSort(int[] array) {//1. 找到待排序数组的范围,也就是找到最大值和最小值int max = array[0];int min = array[0];//循环遍历找寻最小值和最大值for (int i = 1; i < array.length; i++) {if (array[i] > max)max = array[i];if (array[i] < min)min = array[i];}//计算待排数组的长度int len = max - min + 1;//2. 定义一个计数数组int[] count = new int[len];//3. 遍历array数组,把数据计数到计数数组中for (int i = 0; i < array.length; i++) {count[array[i] - min]++;}//4. 将array数组还原int index = 0;//来控制array数组的下标for (int i = 0; i < array.length; i++) {//这个循环的作用,是把count里面标记的数据取出来while (count[i] > 0) {array[index] = i + min;index++;count[i]--;}}}public static void main(String[] args) {int[] a = {5,4,3,2,1};Sort.countSort(a);for (int x : a) {System.out.print(x + " ");}}

3. 性能分析

时间复杂度空间复杂度
O(MAN(N,范围))O(N)
对数据的范围敏感对数据的范围敏感

http://www.rdtb.cn/news/612.html

相关文章:

  • 企业网站如何建设流程/网页设计软件dreamweaver
  • 襄阳网站建设哪个好/重庆seo海洋qq
  • 营口公司网站建设/免费网站分析seo报告是坑吗
  • 企业网站免费推广软件/南宁seo服务优化
  • 自己做的网站怎么加搜索功能/seo 服务
  • 医疗美容网站模板/网页设计模板
  • 喀什网站建设/买外链
  • 公司网站怎么做教程/电商平台推广方式有哪些
  • 软文发布平台乐云seo/搜索引擎优化方法包括
  • 网站建设领先/全免费建立自己的网站
  • 青岛做网站找哪家好/seo文章外包
  • 如何规划网站栏目/培训心得体会范文大全1000字
  • 开发网站教程/六年级下册数学优化设计答案
  • 美橙互联网站建设进不去/电商推广平台有哪些
  • 临沂做网站推广的公司有/网站托管代运营
  • 如何建设企业人力资源网站/中国十大电商公司排名
  • 怎么写网站建设的说明书/一般网站推广要多少钱
  • 国外网站模版免费下载/百度指数平台官网
  • 网站建设用到的算法/seo站长平台
  • 我有网站 怎么做淘宝推广/互联网营销师证书含金量
  • 做婚恋网站/活动宣传推广方案怎么写
  • 表格网站怎么做/域名解析ip138在线查询
  • 西宁网站建设官网/网络seo招聘
  • 永信南昌网站建设/东莞营销型网站建设
  • 网站移动转换/b站推广app大全
  • 怎么在公众号做影视网站/seo一键优化
  • 网站开发模块化开发/网站设计制作在哪里找
  • 做网站499/自媒体营销
  • 密云做网站/优化的近义词
  • 中国做木线条的网站/淘宝关键词搜索工具