Lintcode 摆动排序

给你一个没有排序的数组,请将原数组就地重新排列满足如下性质

nums[0] <= nums[1] >= nums[2] <= nums[3]....
 注意事项

请就地排序数组,也就是不需要额外数组

样例

给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2, 5, 3, 4]

标签 

快速排序 排序 数组 谷歌


分析:先将数组快速排序,然后我们发现如果nums元素个数为偶数我们从倒数第二个元素开始与正数第二个元素进行交换,并且步长都为2.为奇数时将从最后一个元素可是与正数第二个元素交换,步长为2,即可得到答案。


class Solution {
public:
    /**
     * @param nums a list of integer
     * @return void
     */  
     void quickSort(vector<int> &nums,int begin,int end){
         if(begin>end)
         return;
         int first=begin,last=end;
         int temp=nums[first];
         while(first<last){
            while(nums[last]>temp&&last>first) last--;
            nums[first]=nums[last];
            while(nums[first]<=temp&&first<last) first++;
            nums[last]=nums[first];
         }
         nums[first]=temp;
         quickSort(nums,begin,first-1);
         quickSort(nums,first+1,end);
     }
    void wiggleSort(vector<int>& nums) {
        // Write your code here
        quickSort(nums,0,nums.size()-1);
        int j;
        if(nums.size()%2==0)
        j=nums.size()-2;
        else
        j=nums.size()-1;
        int i=1;
        while(i<j){
            int tem=nums[i];
            nums[i]=nums[j];
            nums[j]=tem;
            i+=2;
            j-=2;
        }
    }
};


如有问题请留言。

如有帮助请顶一个,你们的支持是我最大的动力。

文章均可以转载,但请注明文章链接,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab可以用来生成摆动凸轮的模型。摆动凸轮是一种机械装置,用于将旋转的轴上的运动转换为直线或曲线的移动。以下是使用Matlab生成摆动凸轮的步骤: 首先,确定凸轮的基本参数,如凸轮半径、凸轮轴与凸轮中心的距离、凸轮的旋转角度等。这些参数将决定凸轮的形状和运动轨迹。 然后,使用Matlab的绘图函数来创建凸轮的图形。可以使用圆形或椭圆形的轨迹来绘制凸轮的外形。可以使用Matlab的基本绘图函数如plot或line来绘制凸轮的边缘。 接下来,通过凸轮与其他机械部件的相互作用来确认凸轮的运动轨迹。可以使用Matlab的仿真工具来模拟凸轮的运动,例如Simulink或者自定义的运动学模型。 最后,根据需求可以加入其他功能或特性,如凸轮上槽槽的形状、凸轮的运动速度等。这些可以根据具体应用决定。 总之,Matlab是一个功能强大的工具,可以用来生成和模拟摆动凸轮的运动。通过Matlab的绘图函数、仿真工具和自定义模型,可以实现凸轮的形状和运动轨迹的生成。这些步骤可以根据具体需求进行调整和定制,以满足不同的应用要求。 ### 回答2: Matlab是一种功能强大的编程和数值计算软件,它可以用于生成摆动凸轮曲线。在Matlab中,我们可以使用基本的数学公式和函数来定义摆动凸轮的几何形状和运动路径。 为了生成摆动凸轮曲线,首先需要定义凸轮的几何形状。可以使用椭圆形函数或自定义函数来定义凸轮的外形。通过调整椭圆形函数的参数和采样点的数量,可以调整凸轮的长度和曲线的平滑度。 接下来,需要定义摆动凸轮的运动路径。一种常见的方法是使用正弦函数或自定义函数来描述摆动角度随时间的变化。通过调整函数的参数和采样点的数量,可以控制摆动的频率和振幅。 在定义了凸轮的几何形状和运动路径之后,可以使用Matlab的绘图函数来画出摆动凸轮的曲线。通过将凸轮的形状和运动路径描绘在同一个图形上,可以清楚地显示出凸轮的运动路径和几何形状的变化。 在生成摆动凸轮曲线之后,可以利用Matlab的数值计算功能进一步分析凸轮的运动特性。例如,可以计算凸轮转动时所产生的力和加速度曲线,从而了解摆动凸轮的动力学特征。 总之,使用Matlab可以方便地生成摆动凸轮曲线,并对凸轮的运动特性进行进一步分析。通过调整几何形状和运动路径的参数,可以实现不同形状的摆动凸轮曲线,并深入研究凸轮的运动学和动力学特性。 ### 回答3: 生成摆动凸轮的步骤如下: 1. 首先,在MATLAB命令窗口中定义摆动凸轮的参数,如凸轮半径、延长臂长度和凸轮中心角。 2. 创建一个空白的图形窗口,使用 plot 命令绘制一个大圆作为凸轮的轮廓。可以使用 linspace 函数生成一系列的角度值,并通过 sin 和 cos 函数计算相应的 x 和 y轴坐标。 3. 在凸轮图形上,绘制一个直线来表示凸轮的延长臂。直线的起点根据凸轮中心角在原坐标系上确定,终点的坐标位置需要根据延长臂长度和凸轮的角度进行计算。 4. 在图形窗口中添加标签和标题,以提供有关凸轮的相关信息,如凸轮半径、延长臂长度和凸轮中心角。 5. 进行图形窗口的格式化和美化,包括添加坐标轴、网格线、图例等,以使生成的摆动凸轮更加清晰和易于理解。 6. 最后,保存图形窗口为图像文件,以便后续使用或导入到其他应用程序中。 通过以上步骤,我们可以使用MATLAB生成一个简单的摆动凸轮图形,并对其进行必要的格式化和美化,从而实现对摆动凸轮的可视化展示和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值