| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 297 人关注过本帖
标题:求解快速排序中的问题
取消只看楼主 加入收藏
编程2011
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:73
专家分:19
注 册:2011-3-3
结帖率:92%
收藏
已结贴  问题点数:4 回复次数:0 
求解快速排序中的问题
为什么没时间啊,显示的时间都是零
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;
int P(int r[], int,int);
void Q(int r[], int,int );
#include<ctime>
#include<cstdlib>
int main()
{
       const int M=100000;
    int size;
    int x=1;
    int A[M];
     srand(time(0));
    for(int y=0;y<=M;y++)
    {  
       A[y]= 1+rand()%100000;
    }
    cout<<"请输入要排序的范围数: ";
    cin>>size;
    //cout<<endl;
    time_t first1,end1;
    first1=clock();
    Q(A, x, size);
    end1=clock();
    cout<<"所需的时间为: "<<double(end1-first1);

 return 0;
}


void Q(int r[], int first, int end)
{
    if (first<end)
    {                                   //递归结束
           int pivot=P(r, first, end);  //一次划分
           Q(r, first, pivot-1); //递归地对左侧子序列进行快速排序
           Q(r, pivot+1, end);   //递归地对右侧子序列进行快速排序
    }

}

int P(int r[], int first, int end)
{   
    int i=first;                        //初始化
    int j=end;
    int temp;        

    while (i<j)   
    { 
       while (i<j && r[i]<= r[j])
            j--;                        //右侧扫描
       if (i<j)
       {
             temp=r[i];                 //将较小记录交换到前面
             r[i]=r[j];
             r[j]=temp;
              i++;
       }
       while (i<j && r[i]<= r[j])
           i++;                         //左侧扫描
           if (i<j)
           {
              temp=r[j];
              r[j]=r[i];
              r[i]=temp;                //将较大记录交换到后面
               j--;
           }
    }
    return i;                           //i为轴值记录的最终位置
}


   求解释。。。。。
搜索更多相关主题的帖子: 时间 
2011-05-18 23:44
快速回复:求解快速排序中的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016697 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved