序列排序

题目

传入一串数字进行排序,不可影响第一个和最后一个数字的位置,只对中间部分升序排序,排序完成后以空格连接打印。

示例

示例1:

给定 5 个数字:7 3 6 2 1,其中,7 和 1 的位置保持不变,中间的三个数字进行升序排序:

具体见下面的例子

php sort.php 7 3 6 2 1
# 7 2 3 6 1

示例2:

给定 6 个数字:2 3 6 2 4 1,其中,2 和 1 的位置保持不变,中间的四个数字进行升序排序:

具体见下面的例子

php sort.php 2 3 6 2 4 1
# 2 2 3 4 6 1

解析思路

第一步:为了保持首位和末尾的数字不变,那就先弹出第一位和最后一位

$first = array_shift($arr);
$end   = array_pop($arr);

第二步:然后针对弹出后的部分进行升序排序

sort($arr);

第三步:再在排序后的数组头和尾加入原先的值

array_unshift($arr, $first);
array_push($arr, $end);

第四步:用空格连接输出结果

echo implode(' ', $arr);

完整代码

这里提供了多个版本的解题方法
后续可能会增加其它语言的解题方法

PHP版本

function mySort($arr)
{

    $first = array_shift($arr);
    $end   = array_pop($arr);

    sort($arr);

    array_unshift($arr, $first);
    array_push($arr, $end);

    return $arr;
}

mySort([2,3,6,2,4,1]);
// [2,2,3,4,6,1]

JS版本

function mySort(arr) {
    let first = arr.shift()
    let end   = arr.pop()

    arr.sort()

    arr.unshift(first)
    arr.push(end)

    return arr
}

mySort([2,3,6,2,4,1]);
// [2,2,3,4,6,1]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容