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;
    }*/ 
  • 相关阅读:
    POJ 2175 Evacuation Plan 费用流 负圈定理
    POJ 2983 Is the Information Reliable? 差分约束
    codeforces 420B Online Meeting
    POJ 3181 Dollar Dayz DP
    POJ Ant Counting DP
    POJ 1742 Coins DP 01背包
    中国儒学史
    产品思维30讲
    Java多线程编程核心技术
    编写高质量代码:改善Java程序的151个建议
  • 原文地址:https://www.cnblogs.com/daizh/p/6296448.html
Copyright © 2011-2022 走看看