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

成都商城类网站设计天津做app和网站的公司

成都商城类网站设计,天津做app和网站的公司,网站改版声明,企业管理软件erp系统有哪些基数排序 - 桶排序 时间复杂度 O(n*d) – d为数据的长度 每次比较一位#xff08;个位、十位。。。#xff09;#xff0c;所以取值范围就为0-9。 根据该特点#xff0c;设计桶的概念 – 0号桶、1号桶… 1、思想 1#xff09;找出最长的数字#xff0c;确定要处理的…基数排序 - 桶排序 时间复杂度 O(n*d) – d为数据的长度 每次比较一位个位、十位。。。所以取值范围就为0-9。 根据该特点设计桶的概念 – 0号桶、1号桶… 1、思想 1找出最长的数字确定要处理的桶的趟数位数 2依次由个位开始处理把相应位数上的数字放入相应序号的桶内 完成后再按照桶的序号依次取出桶里面的数据放回原始数据当中。 3当处理完所有的位数最终得到有序的序列。 2、局限性 1数据类型改变需要代码较大的修改。 对于之前的代码如果换成浮点数等其他类型数据大体代码思路一致。 但是基数算法不行代码无法做到统一需要进一步修改。 2对于数据正负性要求较高。 之前的代码数据正负性影响不大可比较即可。 对于基数排序需要进一步堆数据进行修改。下文实现的代码对于负数无法实现。 3、实现过程 1从左到右依次遍历原始数据先由个位开始比较。根据每个数据的个位放入相应的桶中。一次遍历如下图所示 2依次遍历各个桶将其重新拷贝到原数据。 3根据十位依次放入对应桶中。 4依次取出数据 因为此次数据最大为两位数所以这次操作就可以发现数据有序了。 4、核心代码 1循环每次取出位上的数字。 2桶的定义 需要为二维数组。使用vectorvectorint 4、代码实现 #includeiostream #includestdlib.h //包含随机数函数srand #includetime.h //需要用time作为随机数种子 #includestring #includevector//基数排序代码 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();//定义桶的二维数组vectorvectorint 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();//定义桶的二维数组vectorvectorint 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.hkea.cn/news/14568009/

相关文章:

  • 网站子站怎么建设仿站怎么修改成自己的网站
  • 嘉兴建网站wordpress系统怎样下载
  • 自己做网站要买什么单一页面网站怎么做
  • 百度推广 帮做网站吗工资8000以上的工作
  • 正规的公司网站建设wordpress替换图片外链
  • php5 mysql网站开发实例精讲chmod wordpress
  • 分类信息网站建设自己开网店
  • 北京网站制作案例河北健康码app官网下载
  • 公司网站邮箱费用网站开发 重庆
  • 深圳中小企业vi设计seo主管招聘
  • 网站建设合同交印花税家居企业网站建设讯息
  • 济南高新区 网站制作怎样设计个人网站
  • 一个网站两个域名 seohtml5响应式网站制作
  • 做快餐料包的网站有哪些坪山医院网站建设
  • 长沙网站公司网站建设广州站是哪个站
  • 杭州住房城乡建设网站查询织梦cms发布侵权网站清单
  • 建设体育课程基地网站淘宝店铺可以做网站优化么
  • 什么是门户网站广告澄海网站建设
  • win10可以自己做网站微信端网站开发流程图
  • 东莞中赢网站建设公司怎么样书签制作简单漂亮图片
  • 扁平化网站建设韩雪冬网站
  • 建行网站用户名是什么网站建设类公司新闻
  • 网站建设淘宝详情页东至网站建设
  • 南昌网站建设品牌免费软文发布平台有哪些
  • 58同城商业后台如何做网站设计公司排名前十
  • 做网站开发经营范围做网站手机版
  • 临沂做网站电话平台搭建是什么
  • 免费做初中试卷的网站我为群众办实事活动总结
  • 网站首页图片素材长图手机开发人员选项怎么设置
  • 贵阳有哪些可以制作网站的公司网站建设整个流程图