您的位置:首页 > 其它

第二周项目3 -体验复杂度

2017-09-20 20:23 113 查看
[html] view
plain copy

*Copyright (c) 2017, 烟台大学计算机学院  

 *All rights reserved.  

 *文件名称:123.cpp  

 *作    者:张俊杰  

 *完成日期:2017年9月20日  

 *版 本 号:v1.0  

 *  

 *问题描述:体验不同算法所运行的时间

 *输入描述:

 *程序输出:见程序运行截屏  

 */  

[csharp] view
plain copy

#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
)!=EOF)  

        n++;  

    printf("数据量:%d, 开始排序....", n);  

    t1=time(0);  

    selectsort(x, n);  

    t2=time(0);  

    printf("用时 %d 秒!", (int)(t2-t1));  

    fclose(fp);  

    return 0;  

}  



[csharp] view
plain copy

//快速排序  

#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
)!=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;  

}  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: