zoukankan      html  css  js  c++  java
  • 分布计数法排序

    #include <stdio.h>
    //分布计数法排序
    void DistributionCounting(int a[], int min, int max)
    {
        int n=6;
        int D[6];//频率数组
        int S[6];
        int i,j,k;
        for (i=0;i<n;i++)
        {
            D[i]=0;
        }
        //计算频率值
        for (i=0;i<n;i++)
        {
            D[a[i]-min]++;
        }
        
        //重用与分布
        for(j=1;j<=max-min;j++)
        {
            D[j]=D[j]+D[j-1];
    
        }
        //排序
        for(i=n-1;i>=0;i--)
        {
            j=a[i]-min;
            S[D[j]-1]=a[i];
            D[j]=D[j]-1;
        }
        for (i=0;i<n-1;i++)
        {
            a[i]=S[i];
        }
    
    
    }
    
    void main()
    {
        int num[6] = {13,11,12,13,12,12};
        int i,min,max;
    
        min=max=num[0];
        printf("排序前输出
    ");
        for ( i = 0; i < 6; i++) 
        {
            if(num[i]>max)
                max=num[i];
            if(num[i]<min)
                min=num[i];
            printf("%d  ",num[i]);
        }
        printf("
     %d %d  ",min ,max );
        DistributionCounting(num, min, max);
    
        printf("
     排序后输出
    ");
        for (i = 0; i < 6; i++) {
    
            printf("%d  ",num[i]);
        }
        printf("
    ");
    }
  • 相关阅读:
    技术笔记3
    技术笔记2 jetty jboss
    技术笔记1前台
    日常笔记4
    日常笔记3
    日常笔记2
    日常笔记
    C语言——结构体
    用Java原子变量的CAS方法实现一个自旋锁
    Java中处理Linux信号量
  • 原文地址:https://www.cnblogs.com/220l/p/4127921.html
Copyright © 2011-2022 走看看