Computer >> Máy Tính >  >> Lập trình >> C ++

Wiggle Sắp xếp trong C ++

Giả sử chúng ta có một mảng chưa được sắp xếp gọi là nums, chúng ta phải sắp xếp lại nó tại chỗ sao cho nums [0] <=nums [1]> =nums [2] <=nums [3] .... và v.v. / P>

Vì vậy, nếu đầu vào là nums =[3,5,2,1,6,4], thì đầu ra sẽ là [3,5,1,6,2,4], có thể có một số câu trả lời khác.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n:=kích thước của nums

  • để khởi tạo i:=0, khi i

    • nếu tôi chẵn và nums [i]> nums [i + 1] là đúng hoặc tôi lẻ và nums [i]> nums [i + 1] là sai, thì

      • hoán đổi (nums [i], nums [i + 1])

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto< v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   void wiggleSort(vector<int<& nums) {
      int n = nums.size();
      for(int i = 0; i < n - 1; i+=1){
         if((i % 2 == 0) == ( nums[i] > nums[i + 1])){
            swap(nums[i], nums[i + 1]);
         }
      }
   }
};
main(){
   vector<int< v = {3,5,2,1,6,4};
   Solution ob;
   ob.wiggleSort(v);
   print_vector(v);
}

Đầu vào

{3,5,2,1,6,4}

Đầu ra

[3, 5, 1, 6, 2, 4, ]