快速排序是冒泡排序的改进。
实现步骤:
找一个基准数 basic ,设置两个指针Low,high。low指向序列的起始位置,high指向序列的末尾。首先用high指向的元素和基准数basic进行比较,如果high指向的元素比basic大,那么high继续向左移动,如果high指向的元素值比basic小,high停止移动,然后让low指向的值赋值为high指向的值,让low指向的元素与basic进行比较,如果low指向的元素的值比basic小,指针前进,如果low指向的元素的值比basic大,停止,high指向的值赋值给low指向的值。重复这个操作,直到low和high相遇,它们指向的位置就是基准数的位置。
找基准数位置的方法:
固定位置选取,随机选取。三分取中。
代码实现:
void sort(int a[],int low,int high)
{
if(low>=high)
return ;
int head=low;
int tail=high;
int key=a[low];
while(head<tail)
{
while(head<tail&&a[tail]>=key)
tail--;
while(head<tail&&a[head]<=key)
head++;
if(head<tail)
{
int t;
t=a[head];
a[head]=a[tail];
a[tail]=t;
}
}
a[low]=a[head];
a[head]=key;
sort(a,low,head-1);
sort(a,head+1,high);
}