//快速排序
//十分重要的算法
//先找到起始数的位置,这个位置将数组分为两部分,第一部分都比起始数小,第二部分都比它大,继而再将每一部分找位置,直到每一部分仅有剩下一个。是采用了一种分治的思想,用递归实现比较方便。找位置,先从右边找第一个比初始位置小的,把小的交换过来,再从左边找比初始位置大的,把大的交换过来,直到首尾指针相同,第一个数的位置就找到了。进而进行递归。
void QuickSort(int arr[],int head,int area)
{
if(head<area)
{
int p=head;
int q=area;
int x=arr[p];
while (p<q) {
while(p<q && arr[q]>=x)
{
q--;
}
if(p<q)
{
arr[p]=arr[q];
p++;
}
while (p<q &&arr[p]<=x) {
p++;
}
if(p<q)
{
arr[q]=arr[p];
q--;
}
}
arr[p]=x;
QuickSort(arr, head, p+1);
QuickSort(arr, q+1, area);
}
}