• 103768

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

C/C++ 语言中简单体验复杂度(1)

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>
/*  
 *Copyright (c) 2017, 烟台大学计算机学院  
 *All rights reserved.  
 *文件名称:main.cpp  
 *作    者:黄士胜  
 *完成日期:2017年9月13日  
 *版 本 号:v1.0  
 *  
 *问题描述:使用两种不同的算法对十万条数据进行排序  
 *输入描述:含有十万条数据的文档  
 *程序输出:见程序运行截屏  
 */ 


 接下来介绍两种方法,我们知道高一我们重点学习了选择法排序和冒泡法排序现在我来演示不同的排序法效率。


#include <stdio.h>  
#include <time.h>  
#include <stdlib.h>  
#define MAXNUM 100000  
void selectsort(int a[], int n)  
{  
        int i, j, k, tmp;  
        for(i = 0; i < n-1; i++)  
        {  
                k = i;  
                for(j = i+1; j < n; j++)  
                {  
                        if(a[j] < a[k])  
                                k = j;  
                }  
                if(k != j)  
                {  
                        tmp = a[i];  
                        a[i] = a[k];  
                        a[k] = tmp;  
                }  
        }  
}  
  
int main()  
{  
    int x[MAXNUM];  
    int n = 0;  
    double t1,t2;  
    FILE *fp;  
    fp = fopen("numbers.txt", "r");  
    if(fp==NULL)  
    {  
        printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n");  
        exit(1);  
    }  
    while(fscanf(fp, "%d", &x[n])!=EOF)  
        n++;  
    printf("数据量:%d, 开始排序....", n);  
    t1=time(0);  
    selectsort(x, n);  
    t2=time(0);  
    printf("用时 %d 秒!", (int)(t2-t1));  
    fclose(fp);  
    return 0;  
} 
运行结果:

#include <stdio.h>  
#include <time.h>  
#include <stdlib.h>  
#define MAXNUM 100000  
void quicksort(int data[],int first,int last)  
{  
    int i, j, t, base;  
    if (first>last)  
        return;  
    base=data[first];  
    i=first;  
    j=last;  
    while(i!=j)  
    {  
        while(data[j]>=base && i<j)  
            j--;  
        while(data[i]<=base && i<j)  
            i++;  
        /*交换两个数*/  
        if(i<j)  
        {  
            t=data[i];  
            data[i]=data[j];  
            data[j]=t;  
        }  
    }  
    data[first]=data[i];  
    data[i]=base;  
    quicksort(data,first,i-1);  
    quicksort(data,i+1,last);  
}  
  
int main()  
{  
    int x[MAXNUM];  
    int n = 0;  
    double t1,t2;  
    FILE *fp;  
    fp = fopen("numbers.txt", "r");  
    if(fp==NULL)  
    {  
        printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n");  
        exit(1);  
    }  
    while(fscanf(fp, "%d", &x[n])!=EOF)  
        n++;  
    printf("数据量:%d, 开始排序....", n);  
    t1=time(0);  
    quicksort(x, 0, n-1);  
    t2=time(0);  
    printf("用时 %d 秒!", (int)(t2-t1));  
    fclose(fp);  
    return 0;  
} 

运行结果:


学后总结:
  通过运行两个程序我们发现,在选择不同的算法的时候对复杂度的计算有着很大的差别我们不仅要正确运行程序的同时也要用更为快捷的算法进行编译.




发布了34 篇原创文章 · 获赞 9 · 访问量 1万+

695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客