1.关于快速排序的理解
2.首先,我们用的是双指针。
先将数据放进数组
给一个数值x,然后有左指针i,和右指针j,
i从左往右走,j从右往左走,放i>j的时候,就跳出循环
如果a[i]大于x,i就停止,然后开始j开始,如果a[j]小于x,j就停止。
然后交换a[i]和a[j],然后递归左边和右边。
代码如下
void merge_sort(int a[],int l,int r)
{
if(l<r) return;
int i=l-1,j=r+1;
int x=a[l+r>>1];
while(i<j)
{
do i++;while(a[i]<x);
do j--;while(a[j]>x);
if(i<j) swap(a[i],a[j]);
}
merge_sort(a,l,j);
merge_sort(a,j+1,r);
return ;
}