クイックソートのソースを書いているのですがうまくコンパイルすることができません。
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXN 10000000 int inputdata(); int quicksort(); int printdata(); int A[MAXN],n,m; int swap(); int find_median3(); int partition(); int insertionsort(); int main(){ inputdata(); A[0] = -999999999; quicksort(1,n); printdata(); } int find_median3(left,right) int left, right; { int center,p; center = (left + right)/2; if(A[left] > A[center]) swap(left,center); if(A[left] > A[right]) swap(left,right); if(A[center] > A[right]) swap(center,right); p = A[center]; swap(center,right); return(p); } int partition(left,right,q) int left,right,q; { int i,j; i=left-1; j=right; do{ do i=i+1; while(A[i]<q); do j=j-1; while(A[j]>q); if(i<j)swap(i,j); }while(i<j); swap(i,right); return(i); } int quicksort(left,right) int left,right; { int cutoff,pivot,i,j; cutoff = 10; clock_t start, end; start = clock(); if((right - left) < cutoff) insertionsort(left,right); else{ pivot = find_median3(left,right); i = partition(left,right,pivot); quicksort(left,i-1); quicksort(i+1,right); } end = clock(); m = end - start; return(0); } int insertionsort(p,q) int p,q; { int i,j,c; for(j=p+1; j <= q; j++){ c=A[j]; i=j; while(i>p && A[i-1]>c){ A[i] = A[i-1]; i = i-1; } A[i] = c; } return(0); } int inputdata(){ int i; srand((unsigned)time(NULL)); printf("出力する乱数の個数を入力=======>"); scanf("%d",&n); printf("\n"); printf("------------入力データ-------------\n"); for(i=1; i<=n; i++){ A[i] = rand()%10000; printf("A[%d]=%5d ",i,A[i]); if(i%4 == 0){ printf("\n"); } } printf("\n"); return(0); } int printdata(){ int i; printf("--------------ソート済みデータ-----------------\n"); for(i=1; i<=n; i++) printf("A[%d]=%5d ",i,A[i]); if(i%4 == 0){ printf("\n"); } } printf("\n"); printf("ソートの処理時間は%f秒です。\n",(double)m / CLOCKS_PER_SEC); return(0); } int swap(i,j) int i,j; { int temp; temp = A[i]; A[i] = A[j]; A[j] = temp; return(0); } コード
そして以下が警告とコンパイルエラーです。
quicksort2.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
quicksort2.c:112:8: error: expected parameter declarator
printf("\n");
^
quicksort2.c:112:8: error: expected ')'
quicksort2.c:112:7: note: to match this '('
printf("\n");
^
quicksort2.c:112:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
printf("\n");
^~~~~~
quicksort2.c:112:1: error: conflicting types for 'printf'
/usr/include/stdio.h:259:6: note: previous declaration is here
int printf(const char * __restrict, ...) __printflike(1, 2);
^
quicksort2.c:113:8: error: expected parameter declarator
printf("ソートの処理時間は%f秒です。\n",(double)m / CLOCKS_PER_SEC);
^
quicksort2.c:113:8: error: expected ')'
quicksort2.c:113:7: note: to match this '('
printf("ソートの処理時間は%f秒です。\n",(double)m / CLOCKS_PER_SEC);
^
quicksort2.c:113:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
printf("ソートの処理時間は%f秒です。\n",(double)m / CLOCKS_PER_SEC);
^~~~~~
quicksort2.c:113:1: error: conflicting types for 'printf'
/usr/include/stdio.h:259:6: note: previous declaration is here
int printf(const char * __restrict, ...) __printflike(1, 2);
^
quicksort2.c:114:1: error: expected identifier or '('
return(0);
^
quicksort2.c:115:1: error: extraneous closing brace ('}')
}
^
3 warnings and 8 errors generated.
申し訳ありませんがアドバイスお願いします。
どうかよろしくお願いいたします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/03 03:35