Asıl yapmak istediğim 10M sayıyı bir dosyadan alıp, diziye kopyalamak. Sayıları sıralamak ve kaç saniyede işlemin tamamlandığını bulmak.
100K sayı için oluyor. Yani programlamayı yaptım. Ancak 10M yapınca hata veriyor.
long int değişkeni bildiğim kadarıyla 4.2G sayı aralığında çalışıyor...
Yardım edebilecek var mı acaba?
Kodlar burada..
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void arayasokmasiralama (long int D[],long int N){
long int i,k,ekle;
for (i=1; i<N; i++){
ekle=D[i];
for(k=i-1; k>=0 && ekle<=D[k]; k--){
D[k+1]=D[k];
}
D[k+1]=ekle;
}
}
int main(){
time_t basla, bit;
int fark;
long int i;
long int a[99999];
printf("Hesaplaniyor\n");
time (&basla);
FILE *Dosya;
Dosya = fopen("sayilar.txt","r");
for(i=0;i<100000;i++)
{
fscanf(Dosya,"%d\n",&a[i]);
}
fclose(Dosya);
arayasokmasiralama(a,100000);
time (&bit);
fark = difftime(bit, basla);
printf("%d saniye surdu.\n",fark);
return(0);
}Not: 10M sayı yaptırmaya çalışmak için aşağıdaki 3 sayıyı değiştireceksiniz.:long int a[99999];
değiştir
long int a[9999999];
for(i=0;i<100000;i++)
değiştir
for(i=0;i<10000000;i++)
arayasokmasiralama(a,100000);
değiştir
arayasokmasiralama(a,10000000);