美文网首页
快速排序

快速排序

作者: __小二杰 | 来源:发表于2016-03-15 19:30 被阅读16次
    //快速排序
    
    void QSort(int a[], int Low, int High)
    
    {
    
       if(Low > High)
    
         return;
    
       int Left = Low;
    
       int Right = High;
    
       int x = a[Low]; //以最左边一个作为枢纽元
    
     
    
       while(Left < Right)
    
       {
    
         //从右向左找到第一个小于枢纽元的值,放到此时的left上
    
         while(Left < Right && a[Right] >= x)
    
           --Right;
    
         a[Left] = a[Right];
    
         //从左到右找到第一个大于枢纽元的,放到此时的right上
    
         while(Left < Right && a[Left] <= x)
    
           ++Left;
    
         a[Right] = a[Left];
    
       }
    
       a[Left] = x; //枢纽元放在left上
    
       //整个while运行完后,枢纽元左边的都是比他小的,右边的都是比他大的,然后再分治
    
       QSort(a, Low, Left-1);
    
       QSort(a, Left+1, High);
    
    }
    

    相关文章

      网友评论

          本文标题:快速排序

          本文链接:https://www.haomeiwen.com/subject/qzlqlttx.html