zoukankan      html  css  js  c++  java
  • 排序集锦(rough)

    //sorts(排序conclusion) 
    #include <stdio.h>
    #include <stdlib.h> 
    #include <time.h>
    /*选择排序 
    (优化:每次与pos位置上的数比较,pos记录最大数的位置,最后交换位置) 
    int main()
    {
        int a[100],n,i,j,x;
        scanf("%d",&n);
        for (i=0;i<n;i++)
            scanf("%d",&a[i]);
        for (i=0;i<n-1;i++)
        {
            for (j=i;j<n;j++)
            {
                if (a[i]<a[j])
                {
                    x=a[i];
                    a[i]=a[j];
                    a[j]=x;
                }
            }
        }
        for (i=0;i<n;i++)
            printf("%4d",a[i]);
        printf("
    "); 
        return 0;
    }*/ 
    /*冒泡排序 
    (优化:用flag标记每轮变化,如果无变化则说明已经按顺序排列,无需继续进行) 
    int main()
    {
        int a[100],n,i,j,x;
        scanf("%d",&n);
        for (i=0;i<n;i++)
            scanf("%d",&a[i]);
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-i;j++)
            {
                if (a[j]<a[j+1])
                {
                    x=a[j];
                    a[j]=a[j+1];
                    a[j+1]=x;
                }
            }
        }
        for (i=0;i<n;i++)
            printf("%4d",a[i]);
        printf("
    "); 
        return 0;
    }*/
    //*希尔排序(冒泡排序升级版) 
    int main()
    {
        int a[100]={0};
        int n,i,step,flag,x,t;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
            scanf("%d",&a[i]);
        step=n/2;
        flag=0;
        t=1;
        while (step>0)
        {
              if(!flag)
            {
                flag=1;
                for(i=t;i<=n-step;i+=step)
                {
                    if(a[i]>a[i+step])
                    {
                         x=a[i];
                         a[i]=a[i+step];
                         a[i+step]=x;
                         flag=0;
                    }
                }
            }
            else
            {
                flag=0;
                t++;
                if (t==step+1)
                {
                    t=1;
                    step=step/2;
                }
            }
        }
        for(i=1;i<=n;i++)
            printf("%4d",a[i]);
        printf("
    ");
    }
    /*插入排序 
    int main()
    {
        int a[100]={0};
        int n,i,t,temp;
        scanf("%d",&n);
        for (i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for (i=2;i<n;i++)
        {
            t=i-1;
            temp=a[i];
            a[0]=temp;
            while (temp<a[t])
            {
                a[t+1]=a[t];
                t--;
            }
            a[t+1]=temp;
        }
        for (i=1;i<=n;i++)
            printf("%4d",a[i]);
        printf("
    ");
        return 0;
    } */
    /*快排
    int n,a[100];
    void sort(int left,int right)
    {
        int i,j,temp,x,t;
        if (left>right)
            return;
        i=left;
        j=right;
        srand(time(0));
        t=left+rand()%(right-left+1);
        temp=a[t];
        a[t]=a[left];
        while(i<j)
        {
            while(a[j]>=temp&&i<j)
            j--;
            while(a[i]<=temp&&i<j)
            i++;
            if (i<j)
            {
                x=a[i];
                a[i]=a[j];
                a[j]=x;
            }
        }
        a[left]=a[i];
        a[i]=temp;
        sort(left,i-1);
        sort(i+1,right); 
    }
    
    int main()
    {
        int i;
        scanf("%d",&n);
        for(i=0;i<n;i++)
           scanf("%d",&a[i]);
        sort(0,n-1); 
        for (i=0;i<n;i++)
           printf("%4d",a[i]);
        printf("
    ");
        return 0;
    }*/ 
  • 相关阅读:
    MySQL日志系统
    MySQL基础架构
    Java操作XML牛逼利器JDOM&DOM4J
    SAX方式解析XML
    DOM方式解析XML
    Jquery Ajax
    Jquery动画效果
    angular6新建项目
    mysql命令行使用
    git常用命令
  • 原文地址:https://www.cnblogs.com/daizh/p/6296448.html
Copyright © 2011-2022 走看看