• 冒泡排序与归并排序运行时间的比较


    为了证明自己的正确性,特写此文章,真理从来都是实践得到的。。。

    https://github.com/congmingyige/Something-in-algorithm-lesson

    生成数据:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <time.h>
     4 
     5 int main()
     6 {
     7     FILE *fp=fopen("sort.in","w");
     8     long n,i;
     9     srand(time(NULL));//wrong
    10     scanf("%ld",&n);
    11     fprintf(fp,"%ld
    ",n);
    12     for (i=1;i<=n;i++)
    13         fprintf(fp,"%ld ",rand()*9+rand());
    14     fclose(fp);
    15     return 0;
    16 }

    冒泡排序:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 long a[100005];
     4 
     5 int main()
     6 {
     7     FILE *fp1=fopen("sort.in","r");
     8     FILE *fp2=fopen("sort.out","w");
     9     long n,i,j,k,t;
    10 //    scanf("%ld",&n);
    11 //    for (i=1;i<=n;i++)
    12 //        scanf("%ld",&a[i]);
    13     fscanf(fp1,"%ld",&n);
    14     for (i=1;i<=n;i++)
    15         fscanf(fp1,"%ld",&a[i]);
    16     //bubble sort
    17     for (i=1;i<n;i++)
    18         for (j=n,k=n-1;j>i;j--,k--)
    19             if (a[j]<a[k])
    20             {
    21                 t=a[j];
    22                 a[j]=a[k];
    23                 a[k]=t;
    24             }
    25 //    for (i=1;i<=n;i++)
    26 //        printf("%ld ",a[i]);
    27     for (i=1;i<=n;i++)
    28         fprintf(fp2,"%ld ",a[i]);
    29     fclose(fp1);
    30     fclose(fp2);
    31     return 0;
    32 }

    归并排序:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 long a[100005],b[100005];
     4 
     5 void mergesort(long l,long r)
     6 {
     7     long mid=(l+r)>>1,i,j,k;
     8     if (l!=mid)
     9         mergesort(l,mid);
    10     if (mid<r)
    11         mergesort(mid+1,r);
    12     for (i=l;i<=r;i++)
    13         b[i]=a[i];
    14     i=l; j=mid+1; k=l;
    15     while (i<=mid && j<=r)
    16     {
    17         if (b[i]<b[j])
    18         {
    19             a[k]=b[i];
    20             k++;
    21             i++;
    22         }
    23         else if (b[i]>b[j])
    24         {
    25             a[k]=b[j];
    26             k++;
    27             j++;
    28         }
    29         else
    30         {
    31             a[k]=b[i];
    32             k++;
    33             i++;
    34             a[k]=b[j];
    35             k++;
    36             j++;
    37         }
    38     }
    39     while (i<=mid)
    40     {
    41         a[k]=b[i];
    42         k++;
    43         i++;
    44     }
    45     while (j<=r)
    46     {
    47         a[k]=b[j];
    48         k++;
    49         j++;
    50     }
    51 }
    52 
    53 int main()
    54 {
    55     FILE *fp1=fopen("sort.in","r");
    56     FILE *fp2=fopen("sort.out","w");
    57     long n,i;
    58 //    scanf("%ld",&n);
    59 //    for (i=1;i<=n;i++)
    60 //        scanf("%ld",&a[i]);
    61     fscanf(fp1,"%ld",&n);
    62     for (i=1;i<=n;i++)
    63         fscanf(fp1,"%ld",&a[i]);
    64     //mergesort
    65     mergesort(1,n);
    66 //    for (i=1;i<=n;i++)
    67 //        printf("%ld ",a[i]);
    68     for (i=1;i<=n;i++)
    69         fprintf(fp2,"%ld ",a[i]);
    70     fclose(fp1);
    71     fclose(fp2);
    72     return 0;
    73 }

     

  • 相关阅读:
    windows下php扩展存在但无法加载的问题
    mysql5.7主从(Master/Slave)同步配置
    windows使用composer.phar
    git untrack file
    git常见问题
    thinkphp框架中Model对象$origin对象的作用
    thinkphp常见问题
    git合并多个commit
    ajax请求post和get的区别以及get post的选择
    .htaccess跳转https
  • 原文地址:https://www.cnblogs.com/cmyg/p/9016353.html
Copyright © 2020-2023  润新知