分治之快速排序

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

//快速排序--分治、递归
void QuickSort(vector<int> &vecarr,int s,int e,int &k)
{
	if(s>=e) return;
	int i=s,j=e;
	while(i!=j)
	{
		if(vecarr[i]>k)
		{	
			if(vecarr[j]<k)
			{
				int temp=vecarr[i];
				vecarr[i]=vecarr[j];
				vecarr[j]=temp;
				i++;
				j--;
			}
			else
			{
				j--;
			}
		}
		else
		{
			i++;
		}
	}
	if(vecarr[i]>k)
	{
		int temp=k;
		k=vecarr[i];
		vecarr[i]=temp;
	}

	QuickSort(vecarr,s,i-1,vecarr[i]);
	QuickSort(vecarr,i+1,e,vecarr[e]);
}

int main()
{
	int n=0;
	vector<int> vecarr;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int itemp=0;
		cin>>itemp;
		vecarr.push_back(itemp);
	}
	vector<int> vecarrbk(n);
	QuickSort(vecarr,0,vecarr.size()-1,vecarr[vecarr.size()-1]);
	for(int m=0;m<vecarr.size();m++)
	{
		cout<<vecarr[m]<<" ";
	}
	cout<<endl;
	return 0;
}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页