• 查找众数


    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <time.h>
    
    char r[20001];
    
    void main()
    
    { 
        int i,n,count,k;
        int a[20001];
        void qk(int m1,int m2); // 函数声明 
        printf(" input string:");
        for(i=1;(r[i] = getchar())!='
    ';i++) ;
        r[i]='';
        n = --i;
        qk(1,n);
        k = 1;
        count = 1;
        for(i=1;r[i]!='';i++)
        printf("%c ",r[i]);
        puts("");
        for(i=1;r[i]!='';i++)
        {
            if(r[i]==r[i+1]) count++;
            else {
                a[k] = count;
                r[k] = r[i];
                k++;
                count =1;
            }
        }
        for(i=1;a[i]!=0;i++)
            printf("%c%d ",r[i],a[i]);
        a[0] = a[1];
        r[0] = r[1];
        for(i=1;a[i]!=0;i++)
        {
            if(a[0]<a[i]) {
            a[0]=a[i];
            r[0]=r[i];
            }
        }
        if(a[0]!=1) 
        printf("重数是%d,众数为%c",a[0],r[0]);
        else printf("元素个数均为1");
    }
    
    void qk(int m1,int m2) // 快速排序递归函数 
    
    { 
        int i,j;
        if(m1<m2)
        { 
            i=m1;
            j=m2;
            r[0]=r[i]; // 定义第i个数作为分区基准 
            while(i!=j)
            { 
                while(r[j]>=r[0] && j>i) // 从右至左逐个检查是否大于基准 
                j=j-1;
                if(i<j) {
                    r[i]=r[j];
                    i=i+1;
                } // 把小于基准的一个数赋给r(i) 
                while(r[i]<=r[0] && j>i) // 从左至右逐个检查是否小于基准 
                    i=i+1;
                if(i<j) {r[j]=r[i];j=j-1;} // 把大于基准的一个数赋给r(j) 
            } // 通过循环完成分区 
            r[i]=r[0]; // 分区的基准为r(i) 
            qk(m1,i-1); qk(i+1,m2); // 在两个区中继续分区 
        }
    }
  • 相关阅读:
    临时文件服务器,配置共享文件夹
    封装扩展方法
    List.Insert
    VS 生成事件中xcopy失败
    创建型设计模式总结
    js提交图片转换为base64
    C#建造者模式
    echarts 立体柱
    k8s生产环境启用防火墙,要开启的端口
    一篇文章为你图解Kubernetes网络通信原理
  • 原文地址:https://www.cnblogs.com/gride-glory/p/8001237.html
Copyright © 2020-2023  润新知