バブルソートアルゴリズムとCのポインターを使用して、構造体の配列をソートしたいと思います。車の構造体があります。
typedef struct{
char model[30];
int hp;
int price;
}cars;
そして私は12項目にメモリを割り当てます:
cars *pointer = (cars*)malloc(12*sizeof(cars));
ファイルからデータを読み取ります。
for (i = 0; i <number ; i++) {
fscanf(file, "%s %i %i\n", (pointer+i)->model, &(pointer+i)->hp, &(pointer+i)->price);
}
私はポインタを渡しptr
にbubbleSort
機能:
bubbleSort(pointer, number);
これが私のbubbleSort
機能です:
void bubbleSort(cars *x, int size) {
int i, j;
for (i=0;i<size-1;i++) {
int swapped = 0;
for (j = 0; j < size - 1 - i; j++) {
if ( (x+i)->hp > (x+j+1)->hp ) {
cars *temp = (x+j+1);
x[j+1] = x[j];
x[j] = *temp;
swapped = 1;
}
}
if (!swapped) {
//return;
}
}
}
問題は、ポインタを使用してアイテムを交換する方法がわからないことです。
ソート機能については、次の解決策を検討してください。
void bubbleSort(cars *x, int size)
{
int i, j;
for (i = 0; i < size-1; i++)
{
for (j = 0; j < size-1-i; j++)
{
if ( x[j].hp > x[j+1].hp )
{
cars temp = x[j+1];
x[j+1] = x[j];
x[j] = temp;
}
}
}
}
問題はデータスワップ部分にありました
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加