用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来调用frommain方法
让我们看下面的实现以更好地理解-
示例
#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]