Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]….
Example:
(1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].
(2) Given nums = [1, 3, 2, 2, 3, 1], one possible answer is [2, 3, 1, 3, 1, 2].
http://blog.csdn.net/brucehb/article/details/50776577
class Solution {
public:
void wiggleSort(vector<int>& nums) {
int n = nums.size();
if (n < 1)
{
return;
}
sort(nums.begin(), nums.end());
vector<int> temp(n, 0);
int j = n-1;
for (int i = 1; i < n; i += 2, j--)
{
temp[i] = nums[j];
}
for (int i = 0; i < n; i += 2, j--)
{
temp[i] = nums[j];
}
nums = temp;
}
};
本文介绍了一种将无序数组重排序为摆动序列的方法,即数组中的元素按小于、大于、小于...的顺序排列。提供了详细的C++实现代码,并通过实例展示了如何使数组满足摆动排序的要求。
&spm=1001.2101.3001.5002&articleId=52399910&d=1&t=3&u=dc85f7fb4ac84862bd5c5c7a46ff20a6)
241

被折叠的 条评论
为什么被折叠?



