在 C++ 中對陣列進行排序


假設我們有一個整數陣列;我們必須按照升序對它們進行排序。因此,如果陣列為 [5,2,3,1],則結果將為 [1,2,3,5]

為解決此問題,我們將按照以下步驟操作 −

  • 建立一個名為 partition 的方法,此方法將採用陣列、low 和 high

  • 設定 pivot := low

  • 使 i 的範圍為 low 至 high – 1

    • 如果 nums[i] < nums[high],則交換(nums[i] 和 nums[pivot]),並將 pivot 增加 1

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

  • 定義一個名為 sortArr() 的方法,此方法將採用陣列、low 和 high

  • 如果 low >= high,則返回

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

  • sortArr(nums, low, partitionIndex – 1)

  • sortArr(nums, partitionIndex + 1, high)

  • 從主方法中透過將 low 和 high 分別傳遞為 0 和 arr – 1 的大小,呼叫 sortArr()

讓我們看看以下實現,以便更好地理解 −

示例

#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]

更新於: 30-4 月-2020

209 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.