网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.经典:教你理解复杂的C/C++声明.
.关于makefile.
.在ActiveX控件中引入窗体技术.
.c++中函数重载的相关知识.
.C语言实现MATLAB 6.5中M文件的方.
.入门教程:C++中的const限定修饰符.
.C++箴言:理解inline化的介入和排.
.C++数据结构学习:二叉树(4).
.C语言中库函数调用几例.
.Web中DataGrid绑定数据显示列可拖.
.C语言图形处理.
.新设想——VC开发多语言界面支持.
.TList的用法.
.算法.
.关机代码.
.在c/c++中利用数组名和指针进行排.
.C/C++ 跨平台I/O操作技巧.
.C语言:黑客学员必修课(二).
.C语言初学者入门讲座 第十讲 函数.
.C++中的 static 关键字.

排序算法比较程序

发表日期:2008-3-8



  功能要求如下:

排序算法比较: shellsort, quicksort, heapsort, mergesort 的算法实现 ,
对同样数据集的排序时间比较。


源代码:

# include <stdio.h>
# include <time.h>

# define MAXSIZE 2000

typedef strUCt{
    int key[MAXSIZE];
    int length;
}list;


long int  compCount;
long int  shiftCount;


void menu(int *m)/*retun m*/
{
    int i;
    char menu[6][15]={"1 CREATE ","2 IMPORT ","3 SORT","4 SHOW RESULT",
                           "5 SAVE RESULT","6 EX99v"};

    clrscr();
    printf("SORT COMPARE SYSTEM\n");
    for (i=0;i<6;i++) printf("%s\n",menu[i]);
    printf("\n Please Select (1-6):\n");
    
    scanf("%d",m);

}



void menusort(int *m)/*retun m*/
{
    int i;
    char menusort[5][15]={"1 SHELL SORT","2 QUICK SORT","3 HEAP SORT",
                            "4 MERGE SORT","5 ALL SORT"};
    
    clrscr();
    printf("SORT\n");
    for(i=0;i<5;i++) printf("%s\n",menusort[i]);
    printf("\n Please Select (1-5):\n");
    
    scanf("%d",m);

}


void menushow(int *m)/*retun m*/
{
    int i;
    char menushow[4][20]={"1 SHELL SORT RESULT","2 QUICK SORT RESULT",
                            "3 HEAP SORT RESULT","4 MERGE SORT RESULT"};
    
    clrscr();
    printf("SHOW SORT RESULT\n");

    for(i=0;i<4;i++) printf("%s\n",menushow[i]);
    printf("\n Please Select (1-4):\n");
    
    scanf("%d",m);

}

void menusave(int *m)
{
    int i;
    char menusave[4][20]={"1 SHELL SORT RESULT","2 QUICK SORT RESULT",
                           "3 HEAP SORT RESULT","4 MERGE SORT RESULT"};
    
    clrscr();
    printf("SAVE:\n");
    for (i=0;i<4;i++) printf("%s\n",menusave[i]);
    printf("\n Please Select (1-4):\n");
    
    scanf("%d",m);
}

void create(list *L)
{
    int i;
    
    printf("HOW MANY DATA?\n");
    scanf("%d",&((*L).length));
    
    for(i=1;i<=(*L).length;i++)
    {
        printf("\nPLEASE INPUT THE %dth DATA:\n",i);
        scanf("%d",&(*L).key[i]);
    }
    printf("\nCREATE COMPLETE !\n");
        
}


int listopen(list *L,char *filename)
{
    int k=1;
    FILE *data;
    
    data=NULL;


    data=fopen(filename,"rb");
    
    while (! feof(data))
        {
            fscanf(data,"%d",&(*L).key[k]);
            k++;
        }
        (*L).length=k-1;
}

void import(list *L)/*fix L*/
{
    char filename[255];
    int i;

    printf("\nPLEASE INPUT THE FILE PATH AND NAME:\n");

    scanf("%s",filename);

    clrscr();
    listopen(L,filename);
    for(i=1;i<(*L).length;i++) printf("%d ",(*L).key[i]);
    printf("\nPRESS ANYKEY RETURN TO MAINMENU...\n");
    getch();
}

void save(list L)
{
    FILE *data;
    char filename[255];
    int r;

    printf("\nPLEASE INPUT THE FILE PATH AND NAME:\n");
    scanf("%s",filename);

    data=fopen(filename,"wb");
    for(r=1;r<=L.length;r++) fprintf(data,"%d\n",L.key[r]);
    fclose(data);
    printf("SAVE OK! \n PRESS ANY KEY TO RETURN THE MAINMENU... ");
    getch();
        
}


list shellsort(list L)/*retun L_SHELL*/
{
    int i,j,gap,x,n;
    
    compCount=shiftCount=0;
    n=L.length;
    gap=n/2;
    while (gap>0)
    {
        compCount++;
        for(i=gap+1;i<=n;i++)
        {
            compCount++;
            j=i-gap;
            while(j>0)
            {
                compCount++;
上一篇:偶写的链表、堆栈、队列的集合操作 人气:607
下一篇:排序的各种方法 人气:659
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐