是对冒泡排序的一种改进,适用于分类(例:把不及格的(<60)放前面,及格的(>=60)放后面)
49 38 65 97 76 13 27 49
没有归并好,但分类时可以使用
49 38 65 97 76 13 27 49
{27 38 13}49{76 97 65 49}
代码实现:
#include<iostream>
using namespace std;
void Qsort(int a[],int low,int high)
{
if(low>=high)
{
return;
}
int first=low;
int last=high;
int key=a[first];/*用字表的第一个记录作为枢轴*/
while(first<last)
{
while(first<last&&a[last]>=key)
--last;
a[first]=a[last];/*将比第一个小的移到低端*/
while(first<last&&a[first]<=key)
++first;
a[last]=a[first];/*将比第一个大的移到高端*/
}
a[first]=key;/*枢轴记录到位*/
Qsort(a,low,first-1);
Qsort(a,first+1,high);
}
int main()
{
int a[]={57,68,59,52,72,28,96,33,24};
Qsort(a,0,sizeof(a)/sizeof(a[0])-1);/*这里原文第三个参数要减1否则内存泄露*/
for(inti=0;i<sizeof(a)/sizeof(a[0]);i++)
{
cout<<a[i]<<"";
}
return(0);
}/*参考数据结构p274(清华大学出版社,严蔚敏)*/