快速排序是一种效率很高的排序算法了。其主要思想为:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
下面为实现代码:
template <class T>
void quickSort(T* ptr,int left,int right)
{
if(left < right){
int base = ptr[left];
int i = left,j = right;
while(i<j){
while(i<j){
if(ptr[j] < base){
ptr[i] = ptr[j];
break;
}
else
j--;
}
while(i<j){
if(ptr[i] > base){
ptr[j] = ptr[i];
break;
}
else
i++;
}
}
ptr[i] = base;
quickSort(ptr,left,i-1);
quickSort(ptr,i+1,right);
}
}
上面为C++版的,下面再来一个python版的:
def quickSort(a,l,r) :
if(l < r) :
i,j = l,r
base = a[l]
while i<j :
while i < j :
if a[j] < base :
a[i] = a[j]
break
else :
j -= 1
while i < j :
if a[i] > base :
a[j] = a[i]
break
else :
i += 1
a[i] = base
quickSort(a,l,i-1)
quickSort(a,i+1,r)