• 快速排序


    快速排序

     1 #include <iostream>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 void qs(int *f,int l,int r)
     7 {
     8     if(l>=r)
     9         return ;
    10     int k=f[l];
    11     int ll=l,rr=r;
    12     while(ll<rr)
    13     {
    14         while(ll<rr&&f[rr]>=k)
    15             rr--;
    16         f[ll]=f[rr];
    17         while(ll<rr&&f[ll]<=k)
    18             ll++;
    19         f[rr]=f[ll];
    20     }
    21     f[ll]=k;
    22     qs(f,l,ll-1);
    23     qs(f,ll+1,r);
    24 }
    25 
    26 int main()
    27 {
    28     int n;
    29     while(scanf("%d",&n)!=EOF)
    30     {
    31         int i;
    32         int f[100010];
    33         for(i=1;i<=n;i++)
    34             scanf("%d",f+i);
    35         qs(f,1,n);
    36         for(i=1;i<n;i++)
    37         {
    38             printf("%d ",f[i]);
    39         }
    40         printf("%d
    ",f[n]);
    41     }
    42     return 0;
    43 }

    统计快速排序的交换次数

     1 #include <iostream>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 int count;
     7 void qs(int *f,int l,int r)
     8 {
     9     if(l>=r)
    10         return ;
    11     int k=f[l];
    12     int ll=l,rr=r;
    13     while(ll<rr)
    14     {
    15         while(ll<rr&&f[rr]>=k)
    16             rr--;
    17         f[ll]=f[rr];
    18         if(ll!=rr)
    19             count++;
    20         while(ll<rr&&f[ll]<=k)
    21             ll++;
    22         f[rr]=f[ll];
    23         if(ll!=rr)
    24             count++;
    25     }
    26     f[ll]=k;
    27     qs(f,l,ll-1);
    28     qs(f,ll+1,r);
    29 }
    30 
    31 int main()
    32 {
    33     int n;
    34     while(scanf("%d",&n)!=EOF)
    35     {
    36         int i;
    37         int f[100010];
    38         for(i=1;i<=n;i++)
    39             scanf("%d",f+i);
    40         count=0;
    41         qs(f,1,n);
    42         for(i=1;i<n;i++)
    43         {
    44             printf("%d ",f[i]);
    45         }
    46         printf("%d
    ",f[n]);
    47         printf("%d
    ",count);
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    Nginx无缝升级
    ajax form提交的问题
    Ubuntu下pecl_http的安装
    提高PHP的运行效率的方法
    php.ini中文对照
    类似 TP中 eq 标签
    PHP身份证验证程序
    mysql在php中的应用
    如何添加JavaScript到Joomla模板中去
    USACO / Controlling Companies (类似BFS)
  • 原文地址:https://www.cnblogs.com/Leroscox/p/6052767.html
Copyright © 2020-2023  润新知