快速排序的思想就是采用分治的思想,先选定一个比较的基准元素,一般选择数组中的第一个元素,然后分别以最左边的元素,下标为0和最右边的元素下标为n-1,分别从左边和右边依次用下标从中间靠拢,期间分别与基准元素比较,如果分别比之小和比之大,则下标移动,否则两者都停止,交换元素,继续,这趟循环直到下标大小相同,随后便将基准元素放入到最终下标位置处,这便是其中的一次循环,经过这次循环,左子列的数都比这个基准元素小,右子列的数都比这个基准元素的数大,以后就可以用这个规律采用递归分别排序这个基准元素左边的左子列和右边的右子列。
void quick_sort(int a[],int left,int right)
{
int l = left,r = right,temp;
while(l<r)
{
pivot = a[(left+right)/2];
while(a[l]<pivot)
i++;
while(a[j]>pivot)
j--;
if(i>=j)
break;
temp = a[i];
a[i] = a[j];
a[j] = temp;
l++;
r--;
}
if(l== r)
l++;
if(left<r)
quick_sort(a,left,l-1);
if(l<right)
quick_sort(a,l+1,right);
}