分治法:快速排序

#include
using namespace std;
//快速排序,就是找到一个数作为基准数,使得它左边的数比他小,右边的数比他大
int n;
int arr[10000001];//将这些设为全局变量可以使得程序时间变快
void quicksort(int left,int right)
{
int i,j,temp;
i=left;//左指针
j=right;//右指针
temp=arr[(left+right)/2];//将中间的数作为基准数
while(i<=j)//左右指针相遇之后不能继续走了
{
while(arr[j]>temp) j–;//找到右边第一个比temp小的数
while(arr[i] if(i<=j)//并且如果这两个数不是相遇之后继续再走才找到的
{
swap(arr[i],arr[j]);//就交换他们的位置
i++;
j–;
}
}
if(left if(i }
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>arr[i];
quicksort(1,n);
for(int i=1;i<=n;i++) cout< }

你可能感兴趣的:(c++)