|
100万個のデータをソートするにはどうすればいいんですか?
今のプログラムではエラーがでてしまいます。少ないデータなら並び替えができます。教えてもらえないでしょうか?環境はリナックスでコンパイルはgccです。よろしくお願いします。
できればこのプログラムを改良してもらえるとありがたいです。
#include <stdio.h>
void selection_sort( int * , int ) ;
main( ) {
char file[10] ;
int a[256],i=0,j;
FILE *fp ;
printf("ファイル名を入力してください");
scanf("%s",file);
fp = fopen(file,"r");
if(fp==NULL) {
printf("ファイルがありません\n");
return 1;
}
while(fscanf(fp,"%d",&a[i])!=EOF) i++ ;
fclose(fp);
selection_sort(a,i+1);
for(j=0;j<=i;j++){
printf("%d\n",a[j]);
}
}
/* 選択ソート */
void selection_sort(int a[], int n)
{
int i, j, t, lowest, lowkey;
int h=0;
int k=0;
for (i = 0; i < n - 1; i++) {
lowest = i;
lowkey = a[i];
for (j = i + 1; j < n; j++){
h++;
if (a[j] < lowkey) {
lowest = j; lowkey = a[j];
}
}
k++;
t = a[i]; a[i] = a[lowest]; a[lowest] = t;
}
printf("選択 :比較%2d:交換%2d\n",h,k);
}
|