在 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]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP