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

Sắp xếp một mảng trong C ++

Giả sử chúng ta có một mảng các số nguyên; chúng ta phải sắp xếp chúng theo thứ tự tăng dần. Vì vậy, nếu mảng giống như [5,2,3,1], thì kết quả sẽ là [1,2,3,5]

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

  • Tạo một phương thức được gọi là phân vùng, phương thức này sẽ lấy mảng, thấp và cao

  • đặt pivot:=low

  • cho tôi trong phạm vi từ thấp đến cao - 1

    • nếu nums [i]

  • hoán đổi nums [pivot] và nums [high]

  • Xác định một phương thức được gọi là sortArr (), phương thức này sẽ nhận mảng, thấp và cao

  • nếu thấp> =cao, thì trả về

  • partitionIndex:=partition (nums, low, high)

  • sortArr (nums, low, partitionIndex - 1)

  • sortArr (nums, partitionIndex + 1, high)

  • gọi sortArr () từ phương thức main bằng cách chuyển thấp và cao là 0 và kích thước là arr - 1

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<string> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   int partition(vector <int>& nums, int low, int high){
      int pivot = low;
      for(int i = low; i < high; i++){
         if(nums[i] < nums[high]){
            swap(nums[i], nums[pivot]);
            pivot++;
         }
      }
      swap(nums[pivot], nums[high]);
      return pivot;
   }
   void sortArr(vector <int>& nums, int low, int high){
      if(low >= high) return;
      int partitionIndex = partition(nums, low, high);
      sortArr(nums, low, partitionIndex - 1);
      sortArr(nums, partitionIndex + 1, high);
   }
   vector<int> sortArray(vector<int>& nums) {
      sortArr(nums, 0, nums.size() - 1);
      return nums;
   }
};
main(){
   vector<int> v1 = {5,2,3,1};
   Solution ob;
   print_vector(ob.sortArray(v1));
}

Đầu vào

[5,2,3,1]

Đầu ra

[1,2,3,5]