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

Sắp xếp từ lớn đến nhỏ trong C ++

Giả sử chúng ta có một danh sách các số nguyên, chúng ta phải sắp xếp danh sách theo cách này -

  • Phần tử đầu tiên là tối đa

  • Yếu tố thứ hai là tối thiểu

  • Phần tử thứ ba là tối đa thứ hai

  • Yếu tố thứ tư là tối thiểu thứ 2

Và như vậy.

Vì vậy, nếu đầu vào là [6,3,10,4], thì đầu ra sẽ là [10, 3, 6, 4]

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

  • Xác định ret mảng

  • sắp xếp số mảng

  • j:=kích thước của nums - 1

  • i:=0

  • trong khi tôi <=j, làm -

    • chèn nums [j] vào cuối ret

    • (giảm j đi 1)

    • nếu tôi <=j, thì -

      • chèn nums [i] vào cuối ret

      • (tăng tôi lên 1)

  • trả lại ret

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

Ví dụ

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

Đầu vào

{6,3,10,4}

Đầu ra

10, 3, 6, 4