• 排序集合


    #include<cstdio>

    #include<cstdlib>

    #include<cmath>

    #include<ctime>

    void c_sort(int *a,int n,int *t);//选择排序

    void ins_sort(int *a,int n,int *t);//插入排序

    void quick_sort(int *a,int n,int *t);//快速排序1

    void p_quick_sort(int *a,int i,int j);

    void heap_sort(int *f,int n);//堆排序

    void build_heap(int *f,int i,int n);

    void c_sort(int *a,int n,int *t)

    {

        int i,j,temp,temp1,start,end;

        start=clock();

        for(i=0;i<n;i++)

        {

            temp=i;

            for(j=i+1;j<n;j++)

            {

                if(a[j]<a[temp])

                {

                    temp=j;

                }

            }

            temp1=a[temp];

            a[temp]=a[i];

            a[i]=temp1;

        }

        *t=clock()-start;

    }

    void ins_sort(int *a,int n,int *t)

    {

        int i,j,temp,start;

        start=clock();

        for(i=1;i<n;i++)

        {

            temp=a[i];

            for(j=i;j>=1;j--)

            {

                if(a[j-1]>temp)

                {

                    a[j]=a[j-1];

                }

                else break;

            }

            a[j]=temp;

        }

        *t=clock()-start;

    }

    void quick_sort(int *a,int n,int *t)

    {

        int start=clock();

        p_quick_sort(a,0,n-1);

        *t=clock()-start;

    }

    void p_quick_sort(int *a,int i,int j)

    {

        int temp,index,start=i,end=j;  if(i>=j)return ;

        temp=a[i];

        while(i<j)

        {

            while(a[j]>=temp&&i<j)

            {

                j--;

            }

            if(i<j)

            {

                a[i]=a[j];

            }

            while(a[i]<temp&&i<j)

            {

                i++;

            }

            if(i<j)

            {

                a[j]=a[i];

            }

        }

    a[i]=temp;

        p_quick_sort(a,start,i-1);

        p_quick_sort(a,i+1,end);

    }

    }
    void build_heap(int *f,int i,int n)
    {
    int cur;
    bool flag;
    int temp;

    flag=true;
    while(flag)
    {cur=i;
    if(2*i+1<n&&f[2*i+1]>f[i])
    {cur=2*i+1;}
    if(2*i+2<n&&f[2*i+2]>f[cur])
    {
    cur=2*i+2;
    }
    flag=false;
    if(cur!=i)
    {
    temp=f[cur];
    f[cur]=f[i];
    f[i]=temp;
    i=cur;
    flag=true;

    }
    }


    }
    void heap_sort(int *f,int n)
    {
    int i;
    for(i=(n-2)/2;i>=0;i--)
    build_heap(f,i,n);
    int j=n,temp;
    for(i=0;i<j;i++)
    {
    build_heap(f,0,n);
    temp=f[n-1];
    f[n-1]=f[0];
    f[0]=temp;
    n--;


    }

    }

  • 相关阅读:
    C#下载文件代码更新20070920
    判断IP地址是否合法的sql2000使用存储过程跟函数
    百万级SQL分页存储过程
    C#批量重命名文件代码的实现
    单个分页的存储过程
    阿江网站访问统计系统设计构思分析
    c#查询QQ状态是否在线查询代码
    C# public class Person
    C#禁止应用程序的多重运行
    Outlook最小化到托盘的设置方法
  • 原文地址:https://www.cnblogs.com/woaiyy/p/2527813.html
Copyright © 2020-2023  润新知