`

Google Interview - Wiggle Sort

 
阅读更多

Write a function to convert the array into alternate increasing decreasing numbers:

a[0] <= a[1] >= a[2] <= a[3] >=...

Note: You should solve it in place and one pass.

 

Solution 1:

public void wiggle_sort(int[] arr) {
    int n = arr.length;
    if(n <= 1) return;
    boolean inc = true;
    int prev = arr[0];
    for(int i=1; i<n; i++) {
        if((inc && prev <= arr[i]) || (!inc && prev >= arr[i])) {
            arr[i-1] = prev;
            prev = arr[i];
        } else {
            arr[i-1] = arr[i];
        }
        inc = !inc;
    }
}

 

Solution 2:

void wiggle_sort(vector<int>& arr) {  
    if(arr.size() < 2) return;  
    int flag = 1;  
    int prev = arr[0];  
    for(int i=1; i<arr.size(); i++) {  
        if(prev*flag <= arr[i]*flag) {  
            arr[i-1] = prev;  
            prev = arr[i];  
        } else {  
            // arr[i-1] = arr[i];  
            swap(arr[i-1], arr[i]);  
        }  
        flag = -flag;  
    }  
}  

 

Reference:

http://www.mitbbs.com/article_t1/JobHunting/32575573_0_1.html 

http://www.fgdsb.com/2015/01/20/special-sorting/

分享到:
评论

相关推荐

    Android-Wiggle用于延迟滚动的库

    **Android Wiggle库详解——实现延迟滚动的创新技术** 在Android开发中,用户界面的流畅性和交互体验至关重要。为了提供更优质的用户体验,开发者们经常需要对控件进行优化,特别是涉及到滚动操作时。"Android ...

    matlab开发-Wiggle

    在MATLAB开发中,"Wiggle"是一个用于可视化矩阵数据的工具,尤其适用于展示振荡和地震数据。它的特点是将矩阵数据呈现为一条主线加上填充的波瓣,这种图形方式能够直观地揭示数据的波动特性,使得研究人员可以更轻松...

    Wiggle-Sort-II.rar_WIGGLE

    摇摆排序(Wiggle Sort)是一种特殊的排序算法,它的目标是使得数组中的元素满足交替升序和降序的顺序,即对于数组 `arr`,它应该满足 `arr[0] [1] &gt; arr[2] [3] &gt; ...` 或者 `arr[0] &gt; arr[1] [2] &gt; arr[3] ...` 的...

    coding-interview-in-java.pdf

    这是对WiggleSort的进一步抽象,考察动态规划的应用。 31. LongestCommonPrefix - 找出字符串数组中所有字符串的最长公共前缀。这是一个字符串处理的基础问题。 32. NextPermutation - 实现获取下一个排列的函数...

    wigb.rar_ wigb_MATLAB wiggle显示_matlab wiggle_wigb增益_地震

    "wiggle显示"指的是使用wiggle图这种视觉表示方法来展示地震数据。wiggle图是一种常见的地震学中用来展示地震记录的图形,它通过线条的上上下下来直观地描绘地震波的动态变化。"matlab_wiggle_wigb增益"可能是指...

    地震剖面图Wiggle曲线绘制与正振幅填充算法.pdf

    地震剖面图Wiggle曲线绘制与正振幅填充算法.pdf

    wiggle.rar_WIGGLE_matlab单炮记录_wiggle matlab_单炮_单炮记录

    读取segy文件后,用于绘制单炮记录等的图像

    protel99se原创电路图PCB图 WIGGLE 20181128

    标题中的“protel99se原创电路图PCB图 WIGGLE 20181128”表明这是一个使用Protel 99 SE软件设计的电路板(PCB)项目,日期为2018年11月28日。Protel 99 SE是一款经典的电子设计自动化(EDA)软件,广泛用于电路原理...

    wigb_地震信号_地震_wigb_WIGGLE_

    标题中的“wigb_地震信号_地震_wigb_WIGGLE_”暗示了这是一个与地震信号处理相关的程序或脚本,可能是一个用特定方法(wigb或WIGGLE)生成地震信号剖面的工具。在地震学中,信号剖面是指将地震数据以图形方式展示...

    wiggle

    标题 "wiggle" 提到的是一个可能的项目或者库,很可能与编程相关,尤其是在描述同样为 "wiggle" 的情况下,我们无法直接获取具体的技术细节。不过,由于标签上注明了 "TypeScript",我们可以推测这与使用 TypeScript...

    WTrackr - #1 Wiggle Price Tracker-crx插件

    查看Wiggle物品的价格历史记录。 将项目直接添加到您的收藏夹并跟踪其价格。 使用Wiggle网站上的综合价格历史记录图。 查看每个商品的价格和库存历史记录,直接将商品添加到您的收藏夹并跟踪其价格,当价格下降时,...

    wiggle.rar_HFSS 天线_HFSS天线仿真_wiggle 天线_天线HFSS

    这是wiggle天线仿真,经过HFSS仿真,比较通用的天线

    Wiggle-Startup-website-layout:初创网站布局

    这个布局方案由一个名为"Wiggle-Startup-website-layout"的项目提供,其主要目标是帮助初创公司在互联网上建立有吸引力的品牌形象。 在构建这个网站布局时,开发人员选择了以下核心技术: 1. **HTML5**:超文本...

    python-leetcode面试题解之第280题摆动排序.zip

    标题中的“摆动排序”(Wiggle Sort)是一道来自LeetCode的编程题目,编号为280。这道题目的目标是给定一个无序的整数数组,将其重新排列成一种“摆动序列”。摆动序列指的是这样一个序列:nums[0] [1] &gt;= nums[2] ...

    wiggle-mouse:摆动鼠标以防止屏幕保护程序的简短实用程序(当缺乏管理员访问权限以禁用屏幕保护程序时)

    摆动鼠标摆动鼠标以防止屏幕保护程序的简短实用程序(当缺乏管理员访问权限以禁用屏幕保护程序时)用法双击wiggle_mouse.exe启动。 关闭控制台或按 Ctrl-C 停止。 您可以将可执行文件复制并粘贴到您想要的任何位置,...

    Wiggle:WIGGLE 将矩阵显示为线加上填充的波瓣,对振荡和/或地震数据很有用。-matlab开发

    函数 WIGGLE 应该以与原生 Matlab 函数 IMAGESC 或 IMAGE 相同的方式工作,但具有一些允许控制外观属性的补充选项。 基本上可以控制线条的颜色和方向,左右叶的颜色等等。 为了控制这些功能,必须提供一个控制字符...

    LeetCode最全代码

    | _O(n)_ ~ _O(n^2)_ | _O(n)_ | Medium || Bit Manipulation, Counting Sort, Pruning| 342 | [Power of Four](https://leetcode.com/problems/power-of-four/) | [C++](./C++/power-of-four.cpp) [Python](./...

    wiggle-xlsx-pipe:玩弄Node管道以将XLSX文件解析为JSON输出

    #Wiggle Spreadsheet Parser ##如何使用 安装节点-有关如何安装的说明可在上找到 运行命令$ node app.js --in [path to xlsx file] --out [name of output file] 最终的JSON输出文件将在output目录中找到 或者,...

    Wiggle Hunt x Modular Grid-crx插件

    将Wiggle Hunt的价格提高到模块化网格 不要只看想要的装备,也要买! 该扩展程序通过Wiggle Hunt,将Eurorack模块的实时销售清单以及更多来自世界各地商店的清单添加到Modular Grid产品页面。 Wiggle Hunt是全球合成...

Global site tag (gtag.js) - Google Analytics