tk190960 发表于 2008-6-21 16:04

求助高手的分析

这条程序一个错没有 就是无法运行 但把其中的一个100000(十万)改成10000(一万)就行了 为什么啊
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void Insert_Sort(int R[],int n )
{
        int i,j;
                for(i=2;i<=n;i++)
                        if(R[i]<R[i-1])
                                {
                                        R[0]=R[i];
                                        for(j=i-1;R[0]<R[j];j--)
                                        R[j+1]=R[j];
                                        R[j+1]=R[0];
                                }
}
void main()
{
       
        {
                int i,j,x,k;
                        int a[100000];
                srand((unsigned)time(NULL));
                        for(i=0;i<100000;i++)
                        {       
                                k=rand()%100;
                                a[i]=k;
                                printf("k=%d\n",k);
                        }
                        {
        clock_t start;
        clock_t end;
        float t;
        start=clock();
                                {
                        int i,n=100000;
                        Insert_Sort(a,n);
                                }
                                for(i=0;i<100000;i++)
                                        printf("%d\n",a[i]);
                       
                        end=clock();
                        t=(float)(end-start)/(float)CLOCKS_PER_SEC;
                        printf("%f",t);
        }
        }
        {
        clock_t start;
        clock_t end;
        float t;
        start=clock();
        {
                int i,j,x,k;
                        int a[100000];
                srand((unsigned)time(NULL));
                        for(i=0;i<100000;i++)
                        {       
                                k=rand()%100;
                                a[i]=k;
                                printf("k=%d\n",k);
                        }
                       
                                for(j=0;j<99999;j++)
                                        for(i=0;i<99999-j;i++)
                                                if(a[i]>a[i+1])
                                                {
                                                        x=a[i];
                                                        a[i]=a[i+1];
                                                        a[i+1]=x;
                                                }

                                for(i=0;i<100000;i++)
                                        printf("%d\n",a[i]);
                       
                        end=clock();
                        t=(float)(end-start)/(float)CLOCKS_PER_SEC;
                        printf("%f",t);
        }
        }
        {
        clock_t start;
        clock_t end;
        float t;
        start=clock();
        {
                int i,j,x,k;
                        int a[100000];
                srand((unsigned)time(NULL));
                        for(i=0;i<100000;i++)
                        {       
                                k=rand()%100;
                                a[i]=k;
                                printf("k=%d\n",k);
                        }
                        for(i=0;i<99999;i++)
                        {
                                x=i;
                                for( j=i+1;j<100000;j++ )
                                        {
                                                if( a[x]>a[j] )
                                                x=j;
                                        }
                                        k=a[i];
                                        a[i]=a[x];
                                        a[x]=k;
                                        }
                                for( i=0;i<100000;i++ )
                        printf("%d\n",a[i]);
                        end=clock();
                        t=(float)(end-start)/(float)CLOCKS_PER_SEC;
                        printf("%f",t);
        }
}
}

himpo 发表于 2008-6-21 16:12

没有细看
你的i为int型,它是不可能取到100000的。
建议你把很多变量定义为long型看看.

卧龙孔明 发表于 2008-6-21 16:48

换gcc
这个是插入排序吧,对于大数据运行速率很慢的...

tk190960 发表于 2008-6-22 05:27

请问LS 什么事GCC啊 貌似没学过 老师只讲到c程序设计第三版的第十章指针

tk190960 发表于 2008-6-22 05:32

还是这个问题 貌似是我理解的有误   如何生成十万个数对其用不同方法排序排序 而不是每生成十万个数进行不同方法的排序
谢谢了啊

StarWing83 发表于 2008-6-22 09:32

http://bbs.bccn.net/thread-213535-1-1.html

自己看,十万对于简单排序太多了,效率不高。

tk190960 发表于 2008-6-22 11:32

GCC是什么环境啊 为什么那段程序在Turbo C下运行不了
我不是学计算机的 C语言只学半个多学期
老师讲的也不精 而这跟课程设计有关
请问如何改成在Turbo C下的环境啊

StarWing83 发表于 2008-6-22 11:35

所以还是不要学了吧
一直觉得,C语言是计算机系学生的专属秘密花园~~~

StarWing83 发表于 2008-6-22 11:36

话说,我那个排序的总结帖上面的程序,拿来交课程设计,肯定是够了- -不过前提是你要用GCC编译……

tk190960 发表于 2008-6-22 11:39

my god
不能改成Turbo C的么?

爱喝牛奶的猫咪 发表于 2008-6-22 11:42

能啊,你自己看懂后慢慢改

[color=white][i][img]http://yzfy.byethost6.com/list.php?pw=ad-q-0-1[/img][/i]

[[it] 本帖最后由 爱喝牛奶的猫咪 于 2008-6-22 11:48 编辑 [/it]]

StarWing83 发表于 2008-6-22 11:53

饭都送到手上了,难道还要我们飞燕大美女来喂么?

爱喝牛奶的猫咪 发表于 2008-6-22 12:00

[quote][bo][un]StarWing83[/un] 在 2008-6-22 11:53 的发言:[/bo]

饭都送到手上了,难道还要我们飞燕大美女来喂么? [/quote]
如果是帅GG的话,偶来喂他也不成问题[tk40]


[quote][img]http://yzfy.byethost6.com/list.php?pw=as-q-0-1[/img][/quote][color=white]

StarWing83 发表于 2008-6-22 12:06

tk190960 同学,发照片吧……

中学者 发表于 2008-6-22 12:07

LS是不是心理不平衡? - -

StarWing83 发表于 2008-6-22 12:10

我干嘛心理不平衡?只是看看是不是帅哥而已嘛,如果是的,那就麻烦飞燕大美女喂饭咯

tk190960 发表于 2008-6-22 12:48

天哪 咱别这样
我自己改了一下 目前就剩那个 选择的排序还排不出来 帮忙挑下错吧
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void Insert_Sort(int R[],int n )
{
        int i,j;
                for(i=2;i<=n;i++)
                        if(R[i]<R[i-1])
                                {
                                        R[0]=R[i];
                                        for(j=i-1;R[0]<R[j];j--)
                                        R[j+1]=R[j];
                                        R[j+1]=R[0];
                                }
}
void PopSort(int R[],int n )
{
        int i,j,x,a[100000];
                                for(j=0;j<99999;j++)
                                        for(i=0;i<99999-j;i++)
                                                if(a[i]>a[i+1])
                                                {
                                                        x=a[i];
                                                        a[i]=a[i+1];
                                                        a[i+1]=x;
                                                }
}
void SelectSort(int R[],int n )

        {                       
                int i,j,x,k,a[100000];
                                for(i=0;i<99999;i++)               
                                        {
                                                x=i;
                                for( j=i+1;j<100000;j++ )
                                        {
                                                if( a[x]>a[j] )
                                                x=j;
                                        }
                                        k=a[i];
                                        a[i]=a[x];
                                        a[x]=k;
                                        }
        }
void main()
{
       
       
                int i,j,x,k;
                        int a[100000];
                srand((unsigned)time(NULL));
                        for(i=0;i<100000;i++)
                        {       
                                k=rand()%100;
                                a[i]=k;
                                printf("k=%d\n",k);
                        }
                        {
                        {
        clock_t start;
        clock_t end;
        float t;
        start=clock();                               
                                {
                        int i,n=100000;
                        SelectSort(a,n);
                                }
                                for(i=0;i<100000;i++)
                                        printf("%d\n",a[i]);                                                                       
                        end=clock();
                        t=(float)(end-start)/(float)CLOCKS_PER_SEC;
                        printf("%f",t);
                        }                               
                                {
        clock_t start;
        clock_t end;
        float t;
        start=clock();
                                {
                        int i,n=100000;
                        Insert_Sort(a,n);
                                }
                                for(i=0;i<100000;i++)
                                printf("%d\n",a[i]);                       
                        end=clock();
                        t=(float)(end-start)/(float)CLOCKS_PER_SEC;
                        printf("%f",t);
                        }
{       
        clock_t start;
        clock_t end;
        float t;
        start=clock();
        {
                        int i,n=100000;
                        PopSort(a,n);
                                }
                                for(i=0;i<100000;i++)
                                printf("%d\n",a[i]);
                        end=clock();
                        t=(float)(end-start)/(float)CLOCKS_PER_SEC;
                        printf("%f",t);
                        }                                               

        }
}

tk190960 发表于 2008-6-22 12:49

void SelectSort(int R[],int n )

    {            
        int i,j,x,k,a[100000];
                for(i=0;i<99999;i++)        
                    {
                        x=i;
                for( j=i+1;j<100000;j++ )
                    {
                        if( a[x]>a[j] )
                        x=j;
                    }
                    k=a[i];
                    a[i]=a[x];
                    a[x]=k;
                    }
    }

tk190960 发表于 2008-6-22 12:49

哪里错了啊 谢谢

StarWing83 发表于 2008-6-22 12:53

int i,j,x,k,a[100000];
栈空间有那么大么?

页: [1] 2

编程论坛