Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3349446
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2006-04-25 11:59:51

快速排序法是交换排序法的一种。它采用了一种分治的策略,通常称其为分治法。

分治法的基本思想是,将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。分为:分解,求解,组合三步。

快速排序法的基本思想为:在无序区中任选一个数值,使它左边的无序区都小于它,右边的无序区都大于它。然后两边的无序区参照该方法依次类推,直到最后一个元素。最终完成排序。

快速排序的最坏情况是,所选的中间值的左边或右边无序区为空,而完跑到另一边。这种快速排序法每次只能将一个数排序,这时的执行效率最低。

算法:

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);
}
阅读(1061) | 评论(0) | 转发(0) |
0

上一篇:冒泡算法

下一篇:快速排序法

给主人留下些什么吧!~~