用C ++对数组排序

假设我们有一个整数数组;我们必须按升序对它们进行排序。因此,如果数组类似于[5,2,3,1],则结果将为[1,2,3,5]

为了解决这个问题,我们将遵循以下步骤-

  • 制作一种称为分区的方法,它将采用低位和高位数组

  • 设置枢轴:=低

  • 对于我,范围从低到高– 1

    • 如果nums [i] <nums [high],则交换(nums [i]和nums [pivot]),将透视数增加1

  • 交换nums [pivot]和nums [high]

  • 定义一个名为的方法sortArr(),该方法将使用低位和高位数组

  • 如果低> =高,则返回

  • partitionIndex:= partition(数字,低,高)

  • sortArr(nums,low,partitionIndex – 1)

  • sortArr(nums,partitionIndex + 1,高)

  • sortArr()通过将高低分别设置为0和arr – 1来调用from main方法

让我们看下面的实现以更好地理解-

示例

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

输入值

[5,2,3,1]

输出结果

[1,2,3,5]