分治算法之快排

动画演示

在这里插入图片描述
黄色:基准元素
绿色:比基准元素小
紫色:比基准元素大

代码

#include<iostream>
using namespace std;
int a[1005];
int n;//元素的个数 
int split(int low,int high)
{
	int x = a[low]; //基准元素
	while(low<high)
	{
		while(low<high&&a[high]>x) --high;
		a[low] = a[high];
		while(low<high&&a[low]<=x) ++low;
		a[high] = a[low];
	}
	a[low] = x;
	int w = low;
	return w;//基准元素的位置
} 

void quickSort(int low,int high)
{
	int w;
	if(low<high)  
	{
		w=split(low,high);
	    quickSort(low,w-1);
	    quickSort(w+1,high);
	}	
}

int main()
{
	cout<<"请输入元素个数:";
	cin>>n;
	cout<<endl<<"请输入将要排序的元素:";
	for(int i=1;i<=n;i++)
	  cin>>a[i];
	quickSort(1,n);
	for(int i=1;i<=n;i++)
	  cout<<a[i]<<" ";
	return 0;
}

时间复杂度

在这里插入图片描述

posted @ 2020-04-09 10:47  南理工学渣  阅读(20)  评论(0)    收藏  举报