快速排序是这样的一种排序算法,每次将关键字放在合适的位置上,关键字之前的都比它小,之后的都比它大,接下来用两种方式实现快速排序的算法,递归和非递归。先看下递归版本的
int partation(ELEM_TYPE *arr,int left,int right)
{
ELEM_TYPE tmp=arr[left];
while(left<right)
{
while(left<right && tmp<=arr[right])
{
right--;
}
arr[left]=arr[right];
//right--;
while(left<right && tmp>=arr[left])
{
left++;
}
arr[right]=arr[left];
}
arr[left]=tmp;
return left;
}
//快速排序
void quick_sort(ELEM_TYPE *arr,int left,int right)
{
if(left<right)
{
int pos=partation(arr,left,right);
quick_sort(arr,left,pos-1);
quick_sort(arr,pos+1,right);
}