/ / सी एक बहुआयामी सरणी में दो चार सरणी की तुलना - सी, सरणी, बहुआयामी-सरणी

सी एक बहुआयामी सरणी में दो चार सरणी की तुलना - सी, सरणी, बहुआयामी-सरणी

मैं एक बहुआयामी सरणी की दो पंक्तियों की कुशलता से तुलना कैसे करूं?

उदाहरण के लिए यदि मेरे पास निम्न बहुआयामी सरणी है:

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;

यदि आपकी पंक्तियां छोटी हैं, तो आप पॉइंटर्स की सरणी को पूरी तरह से छोड़ना और सरणी को जगह में संशोधित करना चुन सकते हैं (यदि वह है जो आप करना चाहते हैं)।