バブルソート、選択ソート、挿入ソートのデータの比較回数,交換回数,代入回数を数える部分を追加したプログラムを書きたいのですがどうしてもエラーが出てしまいますどこがおかしいのでしょうか?
また、数え方は合っているのでしょうか?
//CODE//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int *x, int *y);
void bubblesort( int n, int x[100], int order );
void insertionsort(int n, int y[], int order);
void selectionsort(int n, int z[], int order);
int main(){
int n=100,order,i,x[100]={},a=0,b=0,c=0,y[100]={},z[100]={};
srand((unsigned int)time(NULL));
for(i = 0; i < n ; i++)
{
x[i] = rand();
y[i] = rand();
z[i] = rand();
}
printf("降順なら1,昇順なら0を入力してください:");
scanf("%d",&order);
bubblesort(n,x,order);
insertionsort(n,y,order);
selectionsort(n,z,order);
return 0;
}
void bubblesort( int n, int x[ ], int order ){
int tmp,i,j=0,a=0,b=0,c=0;
if (order==0) { for (i = 0; i < n; i++) { c++; for (j = i + 1; j < n; j++) { a++; if (x[i] > x[j]) { tmp = x[i]; x[i] = x[j]; x[j] = tmp; b++; } } } printf("[バブルソート] 比較回数 %d 交換回数 %d 代入回数 %d \n", a,b,c); }else{ for (i = 0; i < n; i++) { c++; for (j = i + 1; j < n; j++) { a++; if (x[i] < x[j]) { tmp = x[i]; x[i] = x[j]; x[j] = tmp; b++; } } } printf("[バブルソート] 比較回数 %d 交換回数 %d 代入回数 %d \n", a,b,c); }
}
void swap(int *x, int *y){
int temp,c=0,b=0;
temp = *x; c++;
*x = *y; b++;
*y = temp;
c++;
}
void insertionsort(int n, int y[ ], int order){
int i, j,a=0,b=0,c=0;
if (order==0)
{
for(i = 1; i < n; i++){
j = i;
a++;
while( (j > 0) && (y[j-1] > y[j]) ){
swap(&y[j-1], &y[j]);
j--;
}
}
printf("[挿入ソート] 比較回数 %d 交換回数 %d 代入回数 %d \n", a,b,c);
}else{
for(i = 1; i < n; i++){
j = i;a++;
while( (j > 0) && (y[j-1] > y[j]) ){
swap(&y[j-1], &y[j]);
j--; b++;
}
}
printf("[挿入ソート] 比較回数 %d 交換回数 %d 代入回数 %d \n", a,b,c);
}
void selectionsort( int n, int z[100], int order ){
int i, j,a=0,b=0,c=0;
int min;
if (order==0)
{
for(i = 0; i < n; i++){
min = i;
for(j = i + 1; j < n; j++){
if(z[j] < z[min]) min = j;
a++;
}
swap(&z[i], &z[min]);
}
printf("[選択ソート] 比較回数 %d 交換回数 %d 代入回数 %d \n", a,b,c);
}else{
for(i = 0; i < n; i++){
min = i;
for(j = i + 1; j < n; j++){
if(z[j] > z[min]) min = j;
a++;
}
swap(&z[i], &z[min]);
}
printf("[選択ソート] 比較回数 %d 交換回数 %d 代入回数 %d \n", a,b,c);
}
}
}
回答1件
あなたの回答
tips
プレビュー