# lintcode 508.Wiggle Sort

#### LintCode 508. 摆动排序

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

 1 class Solution {
2 public:
3     /*
4     * @param nums: A list of integers
5     * @return: nothing
6     */
7     void wiggleSort(vector<int> &nums) const {
8         const int len = nums.size();
9
10         if (len < 2)
11         {
12             return;
13         }
14
15         bool flag_query_min = true;
16         for (int i = 0; i < len; ++i)
17         {
18             int curr_idx = i;
19             for (int j = i+1; j < i + 3 && j < len; ++j)
20             {
21                 if (flag_query_min)
22                 {
23                     if (nums[j] < nums[curr_idx])
24                     {
25                         curr_idx = j;
26                     }
27                 }
28                 else
29                 {
30                     if (nums[j] > nums[curr_idx])
31                     {
32                         curr_idx = j;
33                     }
34                 }
35             }
36
37             if (curr_idx != i)
38             {
39                 std::swap(nums[i], nums[curr_idx]);
40             }
41
42             flag_query_min = !flag_query_min;
43         }
44     }
45 };

//z 2018-01-16 23:59:30 L.349'30    T2283528791.K.F2338414085[T1,L15,R1,V2]

posted @ 2018-01-17 00:03  BiG5  阅读(106)  评论(0编辑  收藏  举报