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

建设兼职网站目的大连市城乡建设厅网站

建设兼职网站目的,大连市城乡建设厅网站,厦门做个网站多少钱,网站建设招标提问1、基数排序介绍 基数排序是一种基于数字每一位进行排序的算法。它从最低位开始,依次对每一位进行排序,直到最高位。对于整数,从个位开始,将所有数字按照个位数字放入相应的“桶”中,然后按桶的顺序重新收集数据&…

1、基数排序介绍

基数排序是一种基于数字每一位进行排序的算法。它从最低位开始,依次对每一位进行排序,直到最高位。对于整数,从个位开始,将所有数字按照个位数字放入相应的“桶”中,然后按桶的顺序重新收集数据;接着对十位进行同样的操作,以此类推,直到处理完最高位。例如,对于数组[123, 456, 789, 111, 222],先按个位数字排序,再按十位数字排序,最后按百位数字排序,从而得到有序数组。

2、PHP代码实现(支持处理负数):

function radixSort($arr) {$n = count($arr);if ($n <= 1) return $arr;// 处理负数:转换为非负整数$minVal = min($arr);$offset = ($minVal < 0) ? -$minVal : 0;foreach ($arr as &$num) {$num += $offset;}// 获取最大值确定位数$maxVal = max($arr);$exp = 1; // 从个位开始while (floor($maxVal / $exp) > 0) {$arr = countingSort($arr, $exp);$exp *= 10; // 处理十位、百位...}// 恢复原始数值(减去偏移量)if ($offset != 0) {foreach ($arr as &$num) {$num -= $offset;}}return $arr;
}function countingSort($arr, $exp) {$n = count($arr);$output = array_fill(0, $n, 0);$count = array_fill(0, 10, 0);// 统计当前位的出现次数foreach ($arr as $num) {$digit = floor(($num / $exp) % 10);$count[$digit]++;}// 计算累加位置for ($i = 1; $i < 10; $i++) {$count[$i] += $count[$i - 1];}// 反向填充保证稳定性for ($i = $n - 1; $i >= 0; $i--) {$digit = floor(($arr[$i] / $exp) % 10);$output[$count[$digit] - 1] = $arr[$i];$count[$digit]--;}return $output;
}// 示例测试
$testCases = [[-5, 10, -3, 2, 0],   // 含负数[170, 45, 75, 90, 802, 24, 2, 66],[0, 0, 1, 1, 0],      // 重复元素[10000, 999, 100, 10, 1],
];foreach ($testCases as $nums) {$sorted = radixSort($nums);echo "排序前: " . implode(", ", $nums) . "\n";echo "排序后: " . implode(", ", $sorted) . "\n\n";
}

3、执行结果示例

排序前: -5, 10, -3, 2, 0
排序后: -5, -3, 0, 2, 10

排序前: 170, 45, 75, 90, 802, 24, 2, 66
排序后: 2, 24, 45, 66, 75, 90, 170, 802

排序前: 0, 0, 1, 1, 0
排序后: 0, 0, 0, 1, 1

排序前: 10000, 999, 100, 10, 1
排序后: 1, 10, 100, 999, 10000

4、代码解释

1. 处理负数
  • 找到最小值 $minVal,计算偏移量 $offset
  • 将所有元素加上 $offset,确保数组中的值非负。
2. 按位排序(核心逻辑)
  • 确定最大位数:根据 $maxVal 计算需要处理的位数,例如 802 需要处理到百位(exp=100)。
  • 计数排序:对当前位(个位、十位、百位等)进行稳定排序:
    • 统计频率:统计每个数字(0-9)出现的次数。
    • 计算累加位置:将 $count 数组转换为每个数字的结束索引。
    • 反向填充:从原数组末尾遍历,按当前位数字放入 $output 数组的正确位置。
3. 恢复原始值
  • 排序完成后,如果存在负数,将每个元素减去 $offset,恢复原始数值。

5、复杂度分析

  • 时间复杂度:O(d*(n + k)),其中:
    • d 是最大位数,k 是基数(十进制为10)。
    • 每个位数需要进行一次计数排序(O(n + k))。
  • 空间复杂度:O(n + k),用于计数数组 $count 和输出数组 $output

6、适用场景

  • 整数或定长字符串排序:如手机号、身份证号的排序。
  • 数据范围大但位数少:例如对 10^6 个 3 位数排序。
  • 需要稳定排序:如对多关键字排序(先按第二位排序,再按第一位)。


文章转载自:

http://r4YGKV7A.kshzr.cn
http://HrjHOVfG.kshzr.cn
http://XZe2EiAp.kshzr.cn
http://B7A2hp3W.kshzr.cn
http://dMe3au7i.kshzr.cn
http://Zk3dtJ3r.kshzr.cn
http://lz7HTrEQ.kshzr.cn
http://fAupJGNT.kshzr.cn
http://dAatIozr.kshzr.cn
http://VMRXGuXf.kshzr.cn
http://QVKHaDJ1.kshzr.cn
http://Mt6D3wts.kshzr.cn
http://moBmEcNS.kshzr.cn
http://SwUjy65d.kshzr.cn
http://oY473s7u.kshzr.cn
http://DaMC6y5p.kshzr.cn
http://XTYN64xj.kshzr.cn
http://WsbfbA60.kshzr.cn
http://RnGQS2zI.kshzr.cn
http://nFPPQ16X.kshzr.cn
http://xP3RUmne.kshzr.cn
http://e5snGhhZ.kshzr.cn
http://vuie1c8A.kshzr.cn
http://cEMvrOVQ.kshzr.cn
http://1oCBBkzC.kshzr.cn
http://IHRC5reh.kshzr.cn
http://WlGVFiv1.kshzr.cn
http://FAcllVzK.kshzr.cn
http://Zm9keDek.kshzr.cn
http://NnS14q6A.kshzr.cn
http://www.dtcms.com/wzjs/681050.html

相关文章:

  • 网站建设方案书怎么写样版计算机基础培训机构
  • 网站开发部组织架构廊坊视频优化推广
  • 域名注册好了怎么样做网站平台网站模板
  • 找个可以直接看的网站wordpress主题网站
  • 微信投票网站开发安徽网站建设
  • 销售类网站开发架构手机网站开放
  • 对外贸营销型网站建设的几点建议哪里建设网站
  • 中企动力做网站的优势绍兴商城网站开发设计
  • 北京网站优化经理网站建设入账时进那个会计科目
  • 在线网页游戏网站自助旅游网站开发分析报告
  • 如何在vs做网站沧州微酷网络科技有限公司
  • 福建交科建设有限公司官方网站织梦后台如何做网站地图
  • 阿里巴巴有没有帮做网站的公司成都赢星高考培训学校
  • 医美三方网站怎么做百度大数据中心
  • 温州百度推广排名seo关键词排名优化教程
  • 毕设做网站难吗android安装教程
  • 中山中小企业网站制作深圳seo优化信
  • 河北省建设安全监督站的网站网站字体加载不出来怎么办
  • 温州做网站建设公司哪家好郑州证件制作
  • 自己做免费网站昆山哪里有做网站的
  • 做影片的网站描述wordpress文章自动获取标签
  • 网站建设公司架构宝塔linux面板官网
  • 惠州建站公司网页设计作业欣赏
  • 公司网站建设 公司简介怎么写淘宝网站建设基本流程
  • 手机网站开发成为小程序北京住房和城乡建设厅网站
  • 功能性的网站设计制作做网站合肥
  • 足球比分网站建设网站明链怎么做
  • 民治网站建设公司二手网站需求建设分析
  • 做网站需要什么特色运营方案怎么做
  • 企业门户网站建设报价做网站与运营一般多少钱