吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1423|回复: 4
收起左侧

[讨论] 分享一个简单的算法

[复制链接]
74超人不会飞 发表于 2019-12-19 15:41
本帖最后由 74超人不会飞 于 2019-12-19 19:38 编辑

大家好这是本人第一次发帖 因为自己是个菜鸡所以想要分享一个算法给大家 这个算法我记不得是在哪里看见的了 感觉用法非常巧妙所以想分享给大家 这是一个典型的用空间换时间的算法 希望可以带给大家一点灵感 直接上代码了


核心思想就是用输入的数字当作数组的下标

[C] 纯文本查看 复制代码
#include "stdio.h"
int main(){
        //对数组a进行初始化
        int a[100]={0};
        int n,m;
        int i,j;
        printf("请输入0-100以内的数字");
        scanf("%d",&n);
        for(i=0;i<n;i++){
               //每当输入了一个数字 就在对应的位置+1
                scanf("%d",&m);
                a[m]++;
        }

        for(i=0;i<100;i++){
                if(a[i]!=0){
                        for(j=0;j<a[i];j++)
                                printf("%d ",i);
                }
        }
}


捕获.PNG
大佬勿喷

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Dream_Peng 发表于 2019-12-19 16:52
本帖最后由 Dream_Peng 于 2019-12-19 17:00 编辑

不给个解释么?  虽然看出来了是 排序 但是  新手的我看不懂唉   a 不是一个数组么  怎么 if(a!=0) 这个是怎么解呢?

正确的是否应该这样子  (以下仅按照记忆改写,不知对错)


[C#] 纯文本查看 复制代码
#include "stdio.h"
int main(){
    int a[100]={0};
    int n,m;
    int i,j;
    printf("请输入0-100以内的数字");
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&m);
        a[m]++;
    }
    for(i=0;i<100;i++){
         if(a[i]!=0){
            for(j=0;j<a[i];j++){
                 printf("%d ",i);
            }
        }
    }
}
Dream_Peng 发表于 2019-12-19 16:58
哦 懂了'[i]' 【i】这玩意被 多媒体编辑器给 替换掉了。。
1354303696 发表于 2019-12-19 17:10
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 22:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表