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

沈阳网站建设小工作室wordpress的seo标题怎么写

沈阳网站建设小工作室,wordpress的seo标题怎么写,dw网站怎么做跳转,免费模板网站制作基数排序 - 桶排序 时间复杂度 O(n*d) – d为数据的长度 每次比较一位(个位、十位。。。),所以取值范围就为0-9。 根据该特点,设计桶的概念 – 0号桶、1号桶… 1、思想 1)找出最长的数字,确定要处理的…

基数排序 - 桶排序

时间复杂度 O(n*d) – d为数据的长度
在这里插入图片描述

每次比较一位(个位、十位。。。),所以取值范围就为0-9。
根据该特点,设计桶的概念 – 0号桶、1号桶…
在这里插入图片描述

1、思想

1)找出最长的数字,确定要处理的桶的趟数(位数)
2)依次由个位开始处理,把相应位数上的数字,放入相应序号的桶内,
完成后,再按照桶的序号,依次取出桶里面的数据,放回原始数据当中。
3)当处理完所有的位数,最终得到有序的序列。

2、局限性

1)数据类型改变,需要代码较大的修改。
对于之前的代码,如果换成浮点数等其他类型数据,大体代码思路一致。
但是基数算法不行,代码无法做到统一,需要进一步修改。
2)对于数据正负性,要求较高。
之前的代码,数据正负性影响不大,可比较即可。
对于基数排序,需要进一步堆数据进行修改。下文实现的代码,对于负数无法实现。

3、实现过程

在这里插入图片描述
1)从左到右依次遍历原始数据,先由个位开始比较。根据每个数据的个位,放入相应的桶中。一次遍历,如下图所示:
在这里插入图片描述
2)依次遍历各个桶,将其重新拷贝到原数据。
在这里插入图片描述
3)根据十位,依次放入对应桶中。
在这里插入图片描述
4)依次取出数据
在这里插入图片描述
因为此次数据最大为两位数,所以这次操作,就可以发现数据有序了。

4、核心代码:

1)循环每次取出位上的数字。

在这里插入图片描述

2)桶的定义,

需要为二维数组。使用vector<vector<int>>

4、代码实现

#include<iostream>
#include<stdlib.h> //包含随机数函数srand
#include<time.h> //需要用time作为随机数种子
#include<string>
#include<vector>//基数排序代码
void RadixSort(int arr[], int size)
{int maxData = arr[0];//求得数据最大值for (int i = 1; i < size; i++){if (maxData < arr[i]){maxData = arr[i];}}//使用系统自带的函数,求取最大值的位数int len = to_string(maxData).size();//定义桶的二维数组vector<vector<int>> vecs;//这里底层并没有空间int mod = 10;int dev = 1;//处理数据for (int i = 0; i < len; mod *= 10, dev *= 10, i++) //O(d) d为数据的长度{vecs.resize(10);for (int j = 0; j < size; j++){//得到当前元素第i个位置的数字int index = arr[j] % mod / dev;vecs[index].push_back(arr[j]);}//依次遍历所有的桶,把元素拷贝回原始的数组当中int idx = 0;for (auto vec : vecs){for (int v : vec){arr[idx++] = v;}}//清空桶内元素,方便下次使用vecs.clear();}}

测试

int main()
{int arr[10];srand(time(NULL));for (int i = 0; i < 10; i++){arr[i] = rand() % 100 + 1;}for (int v : arr){cout << v << "  ";}cout << endl;RadixSort(arr, sizeof(arr) / sizeof(arr[0]));for (int v : arr){cout << v << "  ";}cout << endl;return 0;
}

在这里插入图片描述

5、 对于有负数情况下,代码修改

1)桶,需要设计为20个。增加负数存放的位置。

vecs.resize(20);

2)求取最大值位数时,需要增加abs() – 绝对值函数

//求得数据最大值
for (int i = 1; i < size; i++)
{if (maxData < abs(arr[i])){maxData = abs(arr[i]);}
}

3) 数据的存放

取得所需位数后,再加10。
负数放于0-9的桶中,正数放于10-19的桶中。

	for (int j = 0; j < size; j++){//得到当前元素第i个位置的数字int index = arr[j] % mod / dev + 10;vecs[index].push_back(arr[j]);}

代码实现

//基数排序代码
void RadixSort(int arr[], int size)
{int maxData = arr[0];//求得数据最大值for (int i = 1; i < size; i++){//为了处理负数,使用abs(),取绝对值if (maxData < abs(arr[i])){maxData = abs(arr[i]);}}//使用系统自带的函数,求取最大值的位数int len = to_string(maxData).size();//定义桶的二维数组vector<vector<int>> vecs;//这里底层并没有空间int mod = 10;int dev = 1;//处理数据for (int i = 0; i < len; mod *= 10, dev *= 10, i++){vecs.resize(20);//20个桶,为了能处理负数 -9 --  9for (int j = 0; j < size; j++){//得到当前元素第i个位置的数字int index = arr[j] % mod / dev + 10;vecs[index].push_back(arr[j]);}//依次遍历所有的桶,把元素拷贝回原始的数组当中int idx = 0;for (auto vec : vecs){for (int v : vec){arr[idx++] = v;}}//清空桶内元素,方便下次使用vecs.clear();}}

测试

在这里插入图片描述

http://www.yayakq.cn/news/765932/

相关文章:

  • 有哪些做ppt用图片的网站有哪些问题在线电子书网站怎么做
  • 惠州建设企业网站中国最权威的网站排名
  • 集团品牌网站建设广州网站建设信息科技有限公司
  • 东莞整合网站建设商业网站后缀名
  • 怎么搭建视频网站天津建设网查询
  • 做什么软件做网站效率最好wordpress 上传路径
  • 网站设计应该做哪些wordpress创建动态页面
  • 自己做网站 需要会什么装饰工程包括哪些主要内容
  • 南昌做网站需要多少钱桂林生活网招聘信息网
  • 钟表网站开发背景文章wordpress 显示视频
  • 做游戏网站需要注意的问题响应式网站 做搜索推广缺点
  • 网站建设开题报告宁波外包seo服务
  • 网站广告位代码广告设计与制作课程
  • 山西定制网站建设电源wordpress后端查询404
  • 如何做好一个外贸网站的编辑做网站送商标
  • 怎么建设大型商务网站贸易类文章网站
  • 一个网站怎么建设wordpress查看jquery版本号
  • 网站定制解决方案加强公司网站平台建设的意义
  • 大学院系网站建设公文写作网站
  • 做网站的博客网站如何维护
  • 用游戏人物做网站属于侵权吗wordpress保存远程图片
  • 官方网站怎么建设的wordpress全站ajax插件
  • 创造与魔法官方网站做自己喜欢的事网站开发工具软件
  • 签署网站建设协议新闻深圳做专业网站
  • 网站制作的管理潍坊专科院校
  • 网站建设行业企业发展前景aws个人免费版
  • 做母婴产品的网站学做视频t的网站
  • 国外网站排行wordpress 同步到微博
  • 营口市住房建设保障办官方网站禄丰县住房和城乡建设局网站
  • 网站建设与推广实训小结上海做oocl船的公司网站