You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速实现从指定数值出发、方向随机的波浪式数组排序

波浪格式定向随机排序实现方案

核心实现逻辑

  • 第一步:先定位并提取指定的起始值,对剩余元素做升序排序,用双指针分别指向剩余元素的最小值和最大值位置
  • 第二步:随机生成初始波浪方向,可选*比起始值大(上升沿起始)或比起始值小(下降沿起始)*两种模式
  • 第三步:根据初始方向交替取剩余元素的最大值、最小值(或最小值、最大值)追加到结果数组,每次追加后移动对应指针,直到所有元素拼接完成

整体时间复杂度为O(n log n),主要耗时在剩余元素的排序步骤,是目前效率较高的实现方案。

代码实现(Python版)

import random

def wave_sort_with_start(arr, start_val):
    # 提取起始点,剩余元素升序排序
    res = [start_val]
    rest = sorted([x for x in arr if x != start_val])
    left, right = 0, len(rest) - 1
    # 随机确定初始方向:True为第一个元素比起始点大,False为更小
    next_larger = random.choice([True, False])
    
    while left <= right:
        if next_larger:
            res.append(rest[right])
            right -= 1
        else:
            res.append(rest[left])
            left += 1
        # 切换下一次的波浪方向
        next_larger = not next_larger
    return res

# 示例测试
test_arr = [10,6,0,8,4,2]
start = 4
print(wave_sort_with_start(test_arr, start))

效果验证

对示例输入多次运行代码,可随机输出两种符合要求的结果:

  • 上升沿起始输出:[4,6,2,8,0,10]
  • 下降沿起始输出:[4,2,6,0,8,10]

内容的提问来源于stack exchange,提问作者Mr. Smit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:21:01