0
例えば、出力が常に0であるような短い関数コードを変更すると、プログラムはcase0を変更します。quicksortarrの値は0になります。これはokeyですが、 )start shellSortarrも変更されましたquicksortarrも変更され、(shellsortarr)と同じになるため、この配列は比較しません。 私は間違いを指摘しています。関数ポインタ使用時の戻り値
私の2番目の質問(重要度の低い)私はこのコードを発見した100%のCPUを使用するための機能をOMPしたいが、私が推測され、これがループ
#pragma omp parallel for schedule(dynamic)
omp_get_wtime();
のために前だけの仕事であるあなたは
をsuggesitonていますこのようなdouble sort(int *(*func)(int*, int), int *a, int len,int i) {
time_t end, begin;
int *b = malloc(len * sizeof *b);
if (!b) { perror("sort: malloc"); return 0; }
memcpy(b, a, len * sizeof b[0]);
//for example b = 10,3,15,6,123
int *selectionSortarr;
int *quicksortarr;
switch(k%2) {
case 0:
begin = clock();
//b = 10,3,15,6,123
quicksortarr = func(b, len);
//for example func(quicksort) is wrong and quicksortarr become 0,0,0,0,0
end = clock();
k++;
break;
case 1:
begin = clock();
//b is again b = 10,3,15,6,123
shellSortarr = func(b, len);
// after that shellsortarr and quicksortarr become 3,6,10,15,123
//therefore compare function is print "File's sorted arrays are equal"
end = clock();
compare(quicksortarr,shellSortarr,len,i);
k=0;
break;
}
free(b);
return (double)(end - begin)/CLOCKS_PER_SEC;
}
.Iコール機能:このような関数をソート
while (fscanf(f, "%d", &input) == 1) a[len++] = input;
quick[i] = sort(quickSort, a, len,i);
shell[i] = sort(shellSort, a, len,i);
.MY:
int *shellSort(int x3[], int n){
//sorting code
return x3;
}
.MYこのような機能を比較:あなたはquicksortarrのための余分なスペースを必要とする
void compare(int *arr1,int *arr2,int len,int y) {
int i=0;
int check=0;
for (i=0; i<len; i++){
if (arr1[i] != arr2[i])
check++;
break;
}
if (check !=0) printf("%i . File's sorted arrays are not equal difference start at %i . variable in array\n",y,i);
else printf("%i. File's sorted arrays are equal\n",y);
}