快速排序

//一个便于理解但不是最优的快速排序算法c++实现。

include <iostream>

using namespace std;
int tswap(int &a,int &b) //交换两个数
{
int s;
s=a;
a=b;
b=s;
return 0;
}

int qsort(int a[],int first,int tail)
{
int flag=first;
int f=first;
int t=tail;
if(first>=tail)
{
return 0;
}
else
{
while(first<tail)
{
while(a[first]<a[flag]&&first<tail)//从左到右找到比key大的数
{
first++;
}
while(a[tail]>=a[flag]&&first<tail)//从右到左找到比key小的数
{
tail--;
}
tswap(a[first],a[tail]);//交换两数
}
tswap(a[flag],a[first]);//将key和较小数交换
}
qsort(a,f,first-1);
qsort(a,first+1,t);
return 0;
}
int main()
{
int a[]= {5,3,1,5,4,8};
qsort(a,0,5);
for(int i=0; i<6; i++)
{
cout<<a[i]<<endl;
}
return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。