分享一个简单的算法
本帖最后由 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 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);
}
}
}
} 哦 懂了'' 【i】这玩意被 多媒体编辑器给 替换掉了。。
这算法可以,感觉是个排序的好方法。
页:
[1]