74超人不会飞 发表于 2019-12-19 15:41

分享一个简单的算法

本帖最后由 74超人不会飞 于 2019-12-19 19:38 编辑

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


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

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

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


大佬勿喷

Dream_Peng 发表于 2019-12-19 16:52

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

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

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


#include "stdio.h"
int main(){
    int a={0};
    int n,m;
    int i,j;
    printf("请输入0-100以内的数字");
    scanf("%d",&n);
    for(i=0;i<n;i++){
      scanf("%d",&m);
      a++;
    }
    for(i=0;i<100;i++){
         if(a!=0){
            for(j=0;j<a;j++){
               printf("%d ",i);
            }
      }
    }
}

Dream_Peng 发表于 2019-12-19 16:58

哦 懂了'' 【i】这玩意被 多媒体编辑器给 替换掉了。。

1354303696 发表于 2019-12-19 17:10

这算法可以,感觉是个排序的好方法。
页: [1]
查看完整版本: 分享一个简单的算法