快速排序法是交换排序法的一种。它采用了一种分治的策略,通常称其为分治法。
分治法的基本思想是,将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。分为:分解,求解,组合三步。
快速排序法的基本思想为:在无序区中任选一个数值,使它左边的无序区都小于它,右边的无序区都大于它。然后两边的无序区参照该方法依次类推,直到最后一个元素。最终完成排序。
快速排序的最坏情况是,所选的中间值的左边或右边无序区为空,而完跑到另一边。这种快速排序法每次只能将一个数排序,这时的执行效率最低。
算法:
void quicksort(int arr[], int low, int high)
{
int i=low, j = high;
int baseval = arr[low];
while(i < j)
{
while(i= baseval) j--;
if(i while(i if(i }
arr[j] = baseval;
quicksort(int arr[], low, j-1 );
quicksort(int arr[], j+1, high);
}
阅读(1085) | 评论(4) | 转发(0) |