重新排序一个序列
来源:互联网 发布:php 做数据统计图 编辑:程序博客网 时间:2024/06/16 14:24
问题:
给定一个序列,按照num[0]<num[1]>num[2]<num[3].........
样例: Given nums = [1, 5, 1, 1, 6, 4]
, one possible answer is[1, 4, 1, 5, 1, 6]
.
解决方案:
void wiggleSort(vector<int>& nums){
if (nums.empty()) {
return;
}
int n = nums.size();
// Step 1: Find the median
vector<int>::iterator nth = next(nums.begin(), n /2);
nth_element(nums.begin(), nth, nums.end());
int median = *nth;
// Step 2: Tripartie partition within O(n)-time & O(1)-space.
auto m = [n](int idx) {return (2 * idx +1) % (n | 1); };
int first = 0, mid =0, last = n - 1;
while (mid <= last) {
if (nums[m(mid)] > median) {
swap(nums[m(first)], nums[m(mid)]);
++first;
++mid;
}
else if (nums[m(mid)] < median) {
swap(nums[m(mid)], nums[m(last)]);
--last;
}
else {
++mid;
}
}
}
- 重新排序一个序列
- 重新排序一个序列
- 两个排好序的数组重新排序为一个新数组
- C#WinForm中DataGridView重新绑定时按照刷新前排序列排序
- 中文搜索引擎重新排序
- Delphi DBGrid重新排序
- list重新排序
- 重新理清冒泡排序
- PHP 数组重新排序
- ios 拖动重新排序
- 无限分类---重新排序
- C# DATATABLE 重新排序
- excel重新排序
- 重新对DataTable排序
- C语言求一个序列的字典序排序
- C# Datatable排序重新排序
- 任意输入一个字符串,将其中的字符按ASCII码值从小到大重新排序
- 将string的各个字符按照ASCII排序后,重新生成一个string的代码
- 2017GMTC全球移动技术大会专题介绍
- Java利用captcha实验图片验证码
- Linux shell编程
- Python中使用libsvm
- ios weak
- 重新排序一个序列
- ViewPager详解(二)广告轮播图
- MyEclipse常用快捷键
- Android EditText响应drawableRight等的点击事件
- Android 启动方式 显示启动
- Spring 事物对系统性能影响
- ARM Cortex-A8 的学习笔记(2)——ARM寄存器
- iOS 清除缓存封装
- js jquery 数组的上移下移置顶置底