Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จัดเรียงกระดิกใน C ++


สมมติว่าเรามีอาร์เรย์ที่ไม่เรียงลำดับที่เรียกว่า nums เราต้องเรียงลำดับใหม่แทนที่ nums[0] <=nums[1]>=nums[2] <=nums[3].... และอื่นๆ

ดังนั้น หากอินพุตเท่ากับ nums =[3,5,2,1,6,4] ผลลัพธ์จะเป็น [3,5,1,6,2,4] อาจมีคำตอบอื่น

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • n :=ขนาดของ nums

  • สำหรับการเริ่มต้น i :=0 เมื่อ i

    • ถ้า i เป็นเลขคู่ และ nums[i]> nums[i+1] เป็นจริง หรือ i เป็นเลขคี่ และ nums[i]> nums[i+1] เป็นเท็จ ดังนั้น

      • swap(nums[i], nums[i + 1])

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#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);
}

อินพุต

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

ผลลัพธ์

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