网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月27日漏签0天
c语言吧 关注:801,834贴子:4,375,667
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回c语言吧
>0< 加载中...

用C编写对排序问题的计时程序(计时有错误)求帮助,谢谢!

  • 只看楼主
  • 收藏

  • 回复
  • gyyts099
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 900
void Creat(long s1[],long s2[],long s3[]);
void Qsort(int v[],int left,int right);             //快速排序
void Swap(int v[],int i,int j);                 //交换函数
void BubbleSort(int s[]);                 //冒泡排序
void InsertSort(int s[],int n);                 //插入排序(从小到大)
int main()
{
     long s1[SIZE],s2[SIZE],s3[SIZE];
     int i;
     clock_t start1,end1,start2,end2,start3,end3;
     long double duration1=0.0,duration2=0.0,duration3=0.0;
     Creat(s1,s2,s3);
     //printf("原数组为:\n");
     //for(i=0;i<SIZE;i++)
     //     printf("s1[%d]=%ld\n",i,s1[i]);
     start1=clock();                 //快速排序开始时间
     Qsort(s1,0,SIZE);                 //快速排序
     end1=clock();                 //快速排序结束时间
     duration1=(double)(end1-start1)/CLOCKS_PER_SEC;;         //快速排序时间差(秒)
     printf("Quick Sort:%f\n",duration1);
     start2=clock();                 //冒泡排序开始时间
     BubbleSort(s2);
     end2=clock();                 //冒泡排序结束时间
     duration2=(double)(end2-start2)/CLOCKS_PER_SEC;         //冒泡排序时间差(秒)
     printf("Bubble Sort:%f\n",duration2);
     start3=clock();                 //插入排序开始时间
     InsertSort(s3,SIZE);
     end3=clock();                 //插入排序结束时间
     duration3=(double)(end3-start3)/CLOCKS_PER_SEC;         //插入排序时间差(秒)
     printf("Insert Sort:%f\n",duration3);



  • gyyts099
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
     return 0;
}
void Creat(long s1[],long s2[],long s3[])
{
     int i;
     srand(time(NULL));                 //rand()的种子
     for(i=0;i<SIZE;i++)
         s1[i]=s2[i]=s3[i]=rand()*65535/0x7fff;         //产生随机数
}
void Qsort(int v[],int left,int right)
{
     int i,last;
     if(left>=right)             //若数组包含的元素数少于两个
         return 0;             //则不执行任何操作
     Swap(v,left,(left+right)/2);         //将划分子集的元素
     last=left;                 //(将为界的数)移动到v[0]
     for(i=left+1;i<=right;i++)         //划分子集
         if(v[i]<v[left])         //通过与v[0](界)比较
             Swap(v,++last,i);     //将小的数移动到靠近v[0]的地(通过last),last可以保证将换过的数都小于v[0],证明的都会被证明
     Swap(v,left,last);             //恢复划分子集的元素(last本身就比v[0]小)
     Qsort(v,left,last-1);             //运算子集
     Qsort(v,last+1,right);
}
void Swap(int v[],int i,int j)
{
     int temp;
     temp=v[i];
     v[i]=v[j];
     v[j]=temp;
}
void BubbleSort(int s[])                 //冒泡排序
{
     int i,j,temp;
     int flag;
     for(i=0;i<SIZE-1;i++)
     {
         flag=1;                 //(标记是否未排序部分满足要求)
         for(j=0;j<SIZE-i-1;j++)
         {
             if(s[j]>s[j+1])
             {
                 Swap(s,j,j+1);
                 flag=0;         //排过序
             }
         }
         if(flag==1)                 //排序完成
             break;
     }
}
void InsertSort(int s[],int n)                     //插入排序(从小到大)
{
     int i,j,temp;
     for(i=1;i<n;i++)                     //排序
     {
         temp=s[i];                     //记录新插入的数值
         for(j=i;j>0&&temp<s[j-1];j--)             //比较并将大的往后移动
             s[j]=s[j-1];
         s[j]=temp;                     //插入新数
     }
}



2026-01-27 15:08:53
广告
不感兴趣
开通SVIP免广告
  • gyyts099
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
补充:SIZE的值可变。


  • 顶之座__赫卡特
  • 马猴烧酒
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
注意使用的类型要对应,比如你的函数中的long和int,调用时就不对应。用%f输出的话,long double那里定义为double就可以正常显示结果。


  • gyyts099
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢~
但是快速排序的结果还输没出来。。。结果为0.000000


  • 顶之座__赫卡特
  • 马猴烧酒
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
说明时间少于1ms。把SIZE调到10000看吧。


  • gyyts099
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这下可以了,谢谢~!!!


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示