Ⅰ C语言编程题逆序数(大数据)给你一个序列x1,x2,…,xn如果数对< xi,xj >其中i< j而xi> xj,称为逆序数对
印象中好像是利用归并排序的性质来做的……(好像)
假设排序a,b,c,d,e,f从小到大排
二分回a,b,c / d,e,f (abc与def已分别排好序答)
主要看前面的a,b,c,有新数组ar[],若最小为d
ar:d
第二小是a则
ar:d,a (这里a跨过了d,表明(a,d)是逆序的)
若:
ar:d,a,b,e,f,
最大是c,表明c跨过了def(5-2,不计ab),说明(c,d),(c,e),(c,f)是逆序
……
其实解题步骤就是归并排序加上一些判断与加减法
//注:不知道会不会超时呢
Ⅱ 用C语言如何实现大数据的加法,且是包括整数和小数的运算
刚写的 看看符合你要求不
#include<stdio.h>
#include<string.h>
typedefstruct
{
inta[200];
intb[200];
}NUM;
voidformat_num(NUM*n,char*str)
{
char*p_dot=NULL;
char*p;
inti=0;
memset(n,0,sizeof(*n));
for(p=str;*p;p++)
if(*p=='.')break;
if(*p)p_dot=p;
p--;
while(p>=str)
{
n->a[i++]=*p---'0';
}
p=p_dot;
if(p==NULL)return;
i=0;
p++;
while(*p)
n->b[i++]=*p++-'0';
}
voidprint_num(NUM*n)
{
inti,j;
for(i=sizeof(n->a)/sizeof(n->a[0])-1;i>=0;i--)
if(n->a[i])break;
if(i>=0)
for(;i>=0;i--)
printf("%d",n->a[i]);
elseprintf("0");
for(i=sizeof(n->b)/sizeof(n->b[0])-1;i>=0;i--)
if(n->b[i])break;
if(i>=0)
{
printf(".");
for(j=0;j<=i;j++)
printf("%d",n->b[j]);
}
}
voidadd(NUM*a,NUM*b,NUM*c)
{
intt=0;
inti;
for(i=sizeof(a->b)/sizeof(a->b[0])-1;i>=0;i--)
{
t+=a->b[i]+b->b[i];
c->b[i]=t%10;
t/=10;
}
for(i=0;i<sizeof(a->a)/sizeof(a->a[0]);i++)
{
t+=a->a[i]+b->a[i];
c->a[i]=t%10;
t/=10;
}
}
intmain()
{
charsa[100],sb[100];
NUMa,b,c;
scanf("%s%s",sa,sb);
format_num(&a,sa);
format_num(&b,sb);
print_num(&a);
printf("+");
print_num(&b);
printf("=");
add(&a,&b,&c);
print_num(&c);
printf(" ");
return0;
}
Ⅲ c语言如何输入很大的数据
测试数据一定是保存在文件中的
只要使用while语句,分段把数字读出来,然后各位数相加,再mod 3求余
可以读一段,把这些数字相加,然后再求余,然后再读一段。。。
这样的过程,就可以把超大数据解决了~
Ⅳ 我只会汇编和C语言,想转大数据,可否哪里有入门的教程或者课程可以学习啊
入门:如果你会汇编和C语言,可以转大数据,因为在你学习大数据的时候,有一段时内间是学习hadoop,其中一部容分牵涉编程,那样的话,你入门会比较快一点
课程:目前市场培训的有几十家,看目前市场口碑最好的就那么三四家,比如:光环大数据,小巷,等业内口碑都非常不错,可以去看啊可能
Ⅳ c语言处理文件里的大数据
说清楚点!复
最简单大文制件分割成小文件,加缓存分批读取小文件进行处理,处理结果存储起来,再将每个小文件处理结果综合起来。
当然具体问题具体分析,这是最基本的思路。
借助工具的话,数据库,根据需求设计表,然后将文本文件导入数据库,为了处理速度,注意分表分区,检索语句也要注意效率问题。
http://www.uml.org.cn/sjjm/201305142.asp
Ⅵ c语言中怎么处理一个特别大的数据的运算
最简单的办法是将大数当作字符串进行处理,也就是将大数用10进制字符数组进行表示,
然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,
因为1024位的大数其10进制数字个数就有数百个,对于任何一种运算,都需要在两个有
数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进位退位标志
及中间结果。其优点是算法符合人们的日常习惯,易于理解。
Ⅶ C语言基础,大数据的输入和输出
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX101
intcheck(char*a){
inti,n,k=1;
n=strlen(a);
for(i=0;i<n;i++)
(a[i]>'9'||a[i]<'0'){
k=0;
break;
}
returnk;
}
intplus(char*a,char*b,int*s){
inti,j,n,m,t,k=0;
//printf("%s %s ",a,b);
i=strlen(a)-1;
j=strlen(b)-1;
t=0;
while(i>=0&&j>=0){
t=t+a[i--]-'0'+b[j--]-'0';
s[k++]=t%10;
t=t/10;
}
if(t&&(i!=j))
s[k]=t;
if(t&&(i==j))
s[k++]=t;
while(i>=0){
s[k]+=a[i--]-'0';
k++;
}
while(j>=0){
s[k]+=b[j--]-'0';
k++;
}
for(i=k-1;i>=0;i--){
printf("%d",s[i]);
}
printf(" ");
returnk;
}
intmain(intargc,char*argv[]){
chara[MAX],b[MAX];
intc[MAX+2]={0};
scanf("%s%s",&a,&b);
//printf("%s %s ",a,b);
if(check(a)&&check(b))
plus(a,b,c);
else
printf("error ");
return0;
}