快速排序模板
程序员文章站
2022-03-24 12:41:30
...
快速排序模板
快速排序是基于二分法的思想,将所要排序的一串数字不断进行二分,将每一个数字找到自己应在的位置,最终实现排序。快速排序的时间复杂度很小,平均时间复杂度为O(NlogN)
'''c
#include <stdio.h>
#include <iostream>
using namespace std;
int a[1005];
void qu
icksort(int left,int right)
{
int i,j,t,temp;
if(left>right)
return;
temp=a[left];//temp中贮存的就是基准数
i=left;
j=right;
while(i!=j)
{//这一部分的先后顺序很重要,必须先从不是基准数的一端开始判断,这样,最后的一步交换基准数,才能将符合的数字归位
while(a[j]>=temp&&i<j)
{
j--;
}
while(a[i]<=temp&&i<j)
{
i++;
}//该模板是将数字从小到大排序
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);//继续处理基准数左边部分,是一个递归过程
quicksort(i+1,right);//继续处理基准数右边部分,是一个递归过程
return;
}
int main()
{
int n;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
quicksort(0,n-1);//调用快速排序
for(int i=0;i<n;i++)
{
cout <<a[i];
}
}
'''