2016-04-05 24 views
1

Çok boyutlu bir dizinin iki satırını nasıl verimli bir şekilde karşılaştırırdım?C Çok boyutlu dizide iki karakter dizisi karşılaştırılıyor

i aşağıdaki çok boyutlu dizi varsa örneğin:

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 
         } 

Sonunda tüm benzersiz satırları

sizin örnekte
+0

[İsteğe bağlı belleği karşılaştır] için standart bir işlev vardır (http://en.cppreference.com/w/c/string/byte/memcmp), belki bunu kullanabilirsiniz? –

+0

Başlangıç ​​seviyesinde bir C programlama kitabında bulmanız için 5 dakika süren gerçekten temel şeyleri yanıtlamaktan vazgeçtim. – Lundin

+0

Mükemmel çalışıyor Teşekkürler :) – user3095420

cevap

1

almak için birbirleri ile her satır karşılaştırmak istiyorum, en verimli Muhtemelen kaba kuvvet veya sabit kodlu mantık.

Daha büyük diziler için, her satırdaki ilk karaktere ayrı bir dizi işaretçi seçmeyi ve memcmp ile birlikte qsort'u çalıştırmayı seçebilirsiniz.

İşaretçileri sıraladıktan sonra, sıralanan diziyi geçebilir ve bir satırı önceki ile karşılaştırmak için yeniden memcmp kullanabilirsiniz. Yinelenenleri listeden aynı anda kaldırabilirsiniz. örn.

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; 

sizin satırlar küçükse, tamamen işaretçiler dizisi atlayıp (Eğer yapmak istediğin buysa) yerinde diziyi değiştirmeyi seçebilir.

+0

@ user3095420 Cevabınızı aldıysanız daha iyi bir netlik için lütfen cevabı kabul edin. Daha fazla bilgi için http://stackoverflow.com/help/someone-answers adresini okuyun. –

İlgili konular