/ / C порівнюючи два масиви char у багатовимірному масиві - c, масиви, багатовимірний масив

C порівняння двох масивів масиву в багатовимірному масиві - c, масиви, багатовимірного масиву

Як я можу ефективно порівнювати два ряди багатовимірного масиву?

наприклад, якщо у мене є такий багатовимірний масив:

char Multi_Array[4][5] = {
{0,1,2,3,4}, //Row1
{5,6,7,8,9}, //Row2
{0,1,2,3,4}, //Row3
{5,9,6,3,2}  //Row4
}

Я хотів би порівняти кожен рядок один з одним, щоб зрештою отримати всі унікальні рядки

Відповіді:

1 для відповіді № 1

У вашому прикладі найефективнішою є, напевно, логіка з грубою чи жорсткою.

Для більших масивів можна вибрати окремий масив покажчиків на перший символ у кожному рядку, а потім запустити qsort разом з memcmp.

Після сортування покажчиків, ви можете перейти, що сортується масив і використовувати memcmp знову порівнювати рядок з попереднім. Можна одночасно видалити дублікати зі списку. наприклад,

int i, uniq = 0;
for( i = 1; i < NUM_ROWS; i++ )
{
if( 0 != memcmp( sorted[uniq], sorted[i], ROW_SIZE ) )
sorted[++uniq] = sorted[i];
}
++uniq;

Якщо ваші рядки невеликі, ви можете повністю пропустити масив покажчиків і змінювати масив на місці (якщо це те, що ви хочете зробити).