快速排序
经典算法 也没什么好多说的
时间复杂度:O(nlogn)———最坏情况下是O(n^2)
空间复杂度:O(logn)———-最坏情况下是O(n)
这里测试数组a[]={1,3,5,7,2,4,6,8}
#include<iostream>
using namespace std;
int partition(int R[],int low,int high)
{
int i,j,k;
i=low;
j=high;
while(i<j)
{
while(i<j && R[j]>=R[i])
j--;
if(i<j)
swap(R[i++],R[j]);
while(i<j && R[i]<=R[j])
i++;
if(i<j)
swap(R[i],R[j--]);
}
return j;
}
void QiuckSort(int R[],int low,int high)
{
int privotpos;
if(low<high)
{
privotpos=partition(R,low,high);
QiuckSort(R,low,privotpos-1);
QiuckSort(R,privotpos+1,high);
}
}
int main()
{
int a[]={1,3,5,7,2,4,6,8};
QiuckSort(a,0,7);
for(int i=0;i<8;i++)
cout<<a[i]<<' ';
return 0;
}