- ベストアンサー
クイックソートについて
クイックソートのプログラムなんですが、 セグメンテーション違反で実行出来ません。 どこがおかしいのでしょうか? int main(void) { FILE *fp; int a[10],b=0,n; clock_t start; double jikan; if( (fp = fopen ("quicksort.txt","r") ) == NULL ) { printf("ファイルが見つかりません : quicksort.txt\n"); exit(1); } while( fscanf(fp, "%d", &a[b]) != EOF ) { b++; } start = clock(); quick_sort(a,n); jikan = clock() - start; for(n = 0; n < b ; ++n) { printf("%d ",a[n]); } printf("計算時間 %.3f 秒 \n", jikan/CLOCKS_PER_SEC); return 0; } int partition(int a[], int l, int r) { int i,j,pivot,t; i = l-1; j = r; pivot = a[r]; for(;;) { while( a[++i] < pivot ) ; while( i < --j && pivot < a[j] ) ; if( i >= j ) break; t=a[i]; a[i]=a[j]; a[j]=t; } t=a[i]; a[i]=a[r];a[r]=t; return i; } void quick_sort_1(int a[],int l,int r) { int v; if( l >= r ) return; v = partition( a, l, r); if( l < v-1 ) quick_sort_1( a, l, v-1); if( v+1 < r ) quick_sort_1( a, v+1, r); } void quick_sort(int a[],int n) { quick_sort_1( a, 0, n-1); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>quick_sort(a,n); quick_sort(a,b); かな
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
#1 と関連して。 コンパイラにgccを使っているのなら、 -O4 -Wall というオプションを追加してみてください。 bash-3.1$ gcc -O4 -Wall qs.c qs.c: In function `main': qs.c:23: warning: implicit declaration of function `clock' qs.c:9: warning: 'n' might be used uninitialized in this function nという変数を初期化していない状態で使ってしまっていることがわかります。