У меня 3 массива: A, B, и С:как сортировать 3 массивы вместе в C
char A[6][10];
int B[6];
int C[6];
Я хочу вышеуказанные 3 массивы (которые имеют один и тот же п # элементов) для сортировки одновременно. Если я отсортировать массив B от самого низкого до самого высокого значения, то я хочу массивов и C следовать Б рисунка. это, возможно, лучше объясняет приведенным ниже примером.
У меня есть код ниже при попытке этого, Мой вопрос: как я могу отредактировать/исправить свой код, чтобы выполнить эту функцию симуляционной сортировки, которая описана ниже?
Unsorted Список:
A[6] B[6] C[6]
John 12 2
David 30 1
Michael 12 2
Steve 12 1
Sam 19 2
Claire 12 1
Затем я хочу, чтобы отсортировать B [я] от низшего к высшему, в то время как А [я] & C [я] являются отсортировано по B [i]
A[6] B[6] C[6]
John 12 2
Michael 12 2
Steve 12 1
Claire 12 1
Sam 19 2
David 30 1
Тогда, если есть одинаковые/одни и те же номера в B [I], то я хочу, чтобы отсортировать С [я] от низшего к высшему вызывает А [я] и B [I] должны быть отсортированы в соответствии с C [I]:
A[6] B[6] C[6]
Steve 12 1
Claire 12 1
John 12 2
Michael 12 2
Sam 19 2
David 30 1
Тогда, если 2 имена из а [я] имеют сходство в в [I] и C [i], а затем сортировать A [i] в алфавитном порядке.
A[6] B[6] C[6]
Claire 12 1
Steve 12 1
John 12 2
Michael 12 2
Sam 19 2
David 30 1
Я написал код, чтобы попытаться сделать это, но я имею немного борьбы в результате чего 1 массив simulatanuosly сортировки в другой массив. Может ли кто-нибудь указать, что я делаю неправильно, или описать лучший/лучший способ сделать этот тип сортировки?
#include <stdio.h>
main()
{
char A[6][10]={"John","David","Michael","Steve","Sam","Claire"};
int B[6] = {12,30,12,12,19,12};
int C[6] = {2,1,2,1,2,1};
int i=0;
int true=1;
for (i=0;i<6;i++)
{
printf("%s\t%d\t%d\n",A[i],B[i],C[i]);
}
while(1)
{
true = 0;
for (i=0;i<6;i++){
if(B[i]> B[i+1]){
int temp = B[i];
B[i] = B[i+1];
B[i+1] = temp;
C[i]= C[i+1];
swapped = 1;
}
}
if (true==0){
break;
}
}
printf("\nnew list\n");
for (i=0;i<6;i++)
{
printf("%s\t%d\t%d\n",A[i],B[i],C[i]);
}
}
Вывод кода:
John 12 2
David 30 1
Michael 12 2
Steve 12 1
Sam 19 2
Claire 12 1
new list
John 12 2
David 12 2
Michael 12 1
Steve 12 1
Sam 19 1
Claire 30 1
Благодаря
Почему вы не свапирований элементы '' Ā' и C' в так же как и для 'B' (хотя замена' A' потребует строкового копирования вместо простого назначения)? – Dmitri
Я подозреваю, что лучшим решением здесь может быть один массив структур. – ooga
Массив структур с qsort был бы намного лучше, но для исправления выбора пузыря не потребовалось бы многого. – Dmitri