排序算法–快速排序
快速排序就是一个不停更换比较对象,使用对象同数组中的元素比较的过程,选择好比较的对象后,先事先记录下比较对象的值,从前后两边同时开始遍历分别用left,right来遍历,从前往后比较的,记录下比比较对象大的或者相等的下标,从后往前比较的大,记录下比比较对象小的目标,然后交换将right记录下标的数字转移到目标对象,将left记录的下标指向的数字转移到right的下标位置,最后当两遍历变量相遇的时候,会产生一个位置为空,将事先存放的比较对象的值放进去。
比较代码如下:
int Partition(int a[],int left,int right)
{
int temp=a[left];
while(left<right)
{
while(left<right&&temp<=a[right]) right--;
a[left]=a[right];
while(left<right&&temp>a[left]) left++;
a[right]=a[left];
}
a[left]=temp;
return left;
}
总之,最后要做到调整完毕后,比较对象的左边都比他小,右边都比他大,然后在分别同样的操作,递归他的左边,他的右边,知道排完序
递归代码:
void quickSort(int a[],int left,int right)
{
if(left<right)
{
int temp=Partition(a,left,right);
quickSort(a,left,temp);
quickSort(a,temp+1,right);
}
}