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

เรียงจากใหญ่ไปเล็กในภาษา C++


สมมติว่าเรามีรายการจำนวนเต็ม เราต้องเรียงลำดับรายการในลักษณะนี้ -

  • องค์ประกอบแรกสูงสุด

  • องค์ประกอบที่สองขั้นต่ำ

  • องค์ประกอบที่สามคือสูงสุดที่ 2

  • องค์ประกอบที่สี่คือขั้นต่ำที่ 2

เป็นต้น

ดังนั้น หากอินพุตเป็น [6,3,10,4] ผลลัพธ์จะเป็น [10, 3, 6, 4]

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

  • กำหนดอาร์เรย์ ret

  • จัดเรียงตัวเลขอาร์เรย์

  • j :=ขนาดของ nums - 1

  • ผม :=0

  • ในขณะที่ฉัน <=j ทำ -

    • ใส่ nums[j] ต่อท้าย ret

    • (ลด j โดย 1)

    • ถ้าฉัน <=j แล้ว −

      • ใส่ nums[i] ต่อท้าย ret

      • (เพิ่ม 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:
   vector<int> solve(vector<int> & nums) {
      vector<int> ret;
      sort(nums.begin(), nums.end());
      int j = nums.size() - 1;
      int i = 0;
      while (i <= j) {
         ret.push_back(nums[j]);
         j--;
         if (i <= j) {
            ret.push_back(nums[i]);
            i++;
         }
      }
      return ret;
   }
};
main() {
   Solution ob;
   vector<int> v = {6,3,10,4};
   print_vector(ob.solve(v));
}

อินพุต

{6,3,10,4}

ผลลัพธ์

10, 3, 6, 4