zoukankan      html  css  js  c++  java
  • 快排和归并

    #include<stdio.h>
    #include<time.h>
    #include<windows.h>
    int num[100000005];
    void ss(int *p,int left,int right)
    {
    int i=left,j=right,k=p[i];
    if(left>=right) return;
    while(i<j)
    {
    while(i<j&&p[j]>k) --j;
    if(i<j) p[i++]=p[j];
    while(i<j&&p[i]<k) ++i;
    if(i<j) p[j--]=p[i];
    }
    p[i]=k;
    ss(p,left,i-1);
    ss(p,i+1,right);
    }
    int main()
    {
    freopen("in","r",stdin);
    int n,i;
    scanf("%d",&n);
    for(i=0;i!=n;++i) scanf("%d",&num[i]);
    clock_t lll=clock();
    ss(num,0,n-1);
    printf("%d",clock()-lll);
    return 0;
    }

    #include<stdio.h>
    #include<time.h>
    int source[100000005],temp[100000005];
    void mymerge(int *s,int *t,int start,int mid,int end);
    void mymergrsort(int *s,int *t,int start,int end);
    void mymerge(int *s,int *t,int start,int mid,int end)
    {
    int i=start,j=mid+1,k=start;
    while(i!=mid&&j!=end)
    {
    if(s[i]<s[j]) t[k++]=s[i++];
    else t[k++]=s[j++];
    }
    while(i!=mid+1) t[k++]=s[i++];
    while(j!=end+1) t[k++]=s[j++];
    for(i=start;i<=end;++i) s[i]=t[i];
    }
    void mymergesort(int *s,int *t,int start,int end)
    {
    int mid=(start+end)/2;
    if(start<end)
    {
    mymergesort(s,t,start,mid);
    mymergesort(s,t,mid+1,end);
    mymerge(s,t,start,mid,end);
    }
    }
    int main()
    {
    freopen("in","r",stdin);
    int n,i;
    scanf("%d",&n);
    for(i=0;i!=n;++i) scanf("%d",&source[i]);
    clock_t lll=clock();
    mymergesort(source,temp,0,n-1);
    printf("%d",clock()-lll);
    return 0;
    }

    在1亿个随机数的测试下,快排16555ms,归并25160

  • 相关阅读:
    SSAS 内部错误:操作未能成功
    无法从项目中获取SSIS包的列表
    新特技软件(Analyzer)添加新用户
    cmd命令搜集
    面试中--js注意事项(小知识点)
    面试的一般需求
    函数----let和const
    函数----箭头函数
    vuex的相关知识
    js中,数组去重的方法的总结(温故而知新)
  • 原文地址:https://www.cnblogs.com/callmebg/p/6378241.html
Copyright © 2011-2022 走看看