快速排序
快速排序的基本思想:通过一趟将带排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对着两部分记录继续进行排序,一达到整个序列有序列的目的。
因为快速排序也是运用了递归的原理,因此我在外封装了一个函数,来实现调用
void _quick_sort(int* arr,size_t left,size_t right)
{
if(left >= right) return ;
size_t l = left;
size_t r = right;
size_t pi = (left+right)/2;
pv = arr[pi];
while(l<r)
{
while(l<pi && arr[l]<=pv)l++;
if(l < pi)
{
arr[pi] = arr[l];
pi = l
}
while(r>pi && arr[r]>=pv)r--;
if(r > pi)
{
arr[pi] = arr[r];
pi = r;
}
}
arr[pi] = pv;
if((pi - left) >1) _qucik_sort(arr,left,pi-1);
if((r-pi)>1)_quick_sort(arr,pi+1,right);
}
void quick_sort(int* arr,size_t len)
{
_quick_sort(arr,0,len-1);
}