2016-04-21 27 views
5
public void BubbleSortArrayString(string[] letters) //change here 
{ 
    bool swap; 
    string temp; //change this too 

    do 
    { 
     swap = false; 

     for (int index = 0; index < (letters.Length - 1); index++) 
     { 
      if (letters[index] > letters[index + 1]) //if first number is greater then second then swap 
      { 
       //swap 

       temp = letters[index]; 
       letters[index] = letters[index + 1]; 
       letters[index + 1] = temp; 
       swap = true; 
      } 
     } 

    } while (swap == true); 
} 

मैंने एक दशमलव को हल करने में कामयाब रहा है लेकिन मैं एक स्ट्रिंग के साथ चूस रहा हूं, मेरे पास महीनों के साथ एक टेक्स्ट फ़ाइल है और मुझे इसे वर्णानुक्रम में क्रमबद्ध करने की आवश्यकता है। मुझे त्रुटि मिलती है:एक स्ट्रिंग सरणी को सॉर्ट करने के लिए कैसे करें?

operator > cannot be applied to type string and string

सहायता की सराहना की जाएगी।

+1

FYI करें: इस तरह '== TRUE' अनावश्यक है, क्योंकि यह सिर्फ मूल्यांकन कर रही है कि क्या आपके बूलियन मान एक बूलियन मान वापस जाने के लिए एक और बूलियन मान के बराबर होती है, आप के बाद से पहले से ही आपके साथ शुरू करने के लिए एक बुलियन वैल्यू है बस उस का उपयोग कर सकते हैं ('जबकि (स्वैप)' – Sayse

उत्तर

5

आप < के बजाय string.Compare(x,y), जो 0 लौटाता है यदि स्ट्रिंग के बराबर हैं उपयोग कर सकते हैं, नहीं तो एक पूर्णांक है कि सॉर्ट क्रम

for (int index = 0; index < (letters.Length - 1); index++) 
    { 
     if (string.Compare (letters[index], letters[index + 1]) < 0) //if first number is greater then second then swap 
     { 
      //swap 

      temp = letters[index]; 
      letters[index] = letters[index + 1]; 
      letters[index + 1] = temp; 
      swap = true; 
     } 
    } 

आप तुलना के दौरान मामले को अनदेखा करना चाहते हैं में अपने रिश्तेदार की स्थिति को इंगित करता है, आपको string.Compare (letters[index], letters[index + 1], true)

+0

आपको बहुत बहुत धन्यवाद! – georgeThornton96

0

का उपयोग करना चाहिए आप स्ट्रिंग के लिए String.CompareOrdinal का उपयोग कर सकते हैं। अगर आप घोंसले को कम करने के लिए अपने if कथन को उलटा करते हैं तो यह बेहतर होगा।

if (String.CompareOrdinal(letters[index], letters[index + 1]) >= 0) continue;      
temp = letters[index]; 
letters[index] = letters[index + 1]; 
letters[index + 1] = temp; 
swap = true; 

से MSDN:

This method performs a case-sensitive comparison using ordinal sort rules. For more information about word, string, and ordinal sorts, see System.Globalization.CompareOptions. To perform a case-insensitive comparison using ordinal sort rules, call the Compare(String, String, StringComparison) method with the comparisonType argument set to StringComparison.OrdinalIgnoreCase.

संबंधित मुद्दे