Ⅰ 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;
}