```php
<?php
/**
* 多维数组合并排序
* @param $arr
* @return array
*/
function mergeMultiSortArray($arr) {
$data = [];
$arrPoint = [];
foreach ($arr as $k => $v) {
$arrPoint[$k] = 0; // 为每个数组初始化指针,指向第一个位置,0表示
}
while (!empty($arr)) {
$arrIndex = null;
$min = null;
foreach ($arr as $k => $v) { // 比较每个数组指针指向的元素
$vIndex = $arrPoint[$k];
$vValue = $v[$vIndex];
if ($min == null || $vValue < $min) {
$min = $vValue;
$arrIndex = $k;
}
}
$data[] = $min;
$arrPoint[$arrIndex]++; // 移动数组元素指针
if (count($arr[$arrIndex]) <= $arrPoint[$arrIndex]) { // 指针已经指向数组元素最后一位,则删除数组
unset($arr[$arrIndex]);
}
}
return $data;
}
$t1 = microtime(true);
$arr = array(
array(3, 10, 100, 101, 103, 105, 109, 123, 145),
array(2, 30, 70),
array(4, 6, 9)
);
$data = mergeMultiSortArray($arr);
echo "耗时: " . (microtime(true) - $t1) . PHP_EOL;
print_r($data);
```
```bash
耗时: 8.7976455688477E-5
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 6
[4] => 9
[5] => 10
[6] => 30
[7] => 70
[8] => 100
[9] => 101
[10] => 103
[11] => 105
[12] => 109
[13] => 123
[14] => 145
)
```
- php
- 编译安装
- 基本概念
- 垃圾回收机制
- 生命周期
- zval底层实现
- c扩展开发
- gdb调试工具
- 自定义扩展简单demo
- 钩子函数
- 读取php.ini配置
- 数组
- 函数
- 类
- yaf扩展底层源码
- swoole扩展底层源码
- memoryGlobal内存池
- swoole协程使用记录
- 单点登录sso原理
- compser使用
- session实现机制
- c & linux
- gcc
- 指针
- 结构体,联合和位字段
- 宏定义井号说明
- printf家族函数和可变参数
- 共享函数
- 静态库和动态库
- makefile自动化构建
- 信号一
- 信号二
- inotify监控文件事件
- socket编程
- 简介
- UNIX DOMAIN
- Internet DOMAIN
- TCP/IP
- 文件IO多路复用
- 内存管理
- 进程组,会话和控制终端
- daemon守护进程
- 多进程
- 多线程
- 常用进制转换
- go
- 入门知识
- 字节和整数装换
- python
- redis
- 应用场景
- 消息队列
- 热点数据
- 扫码登录
- 订阅发布
- 次数限制
- 抢购超卖
- 持久化机制
- mysql
- 工作流程
- MyISAM和InnoDB区别
- 用户和权限管理
- 执行计划
- sql优化
- 事务和锁
- 慢查询日志
- case...when...then...end用法
- sql
- 参考
- linux
- 内核参数优化
- 防火墙设置
- docker
- docker入门知识
- 算法
- 多维数组合
- DFA算法
- 红包金额分配