2014-11-10 42 views

उत्तर

44

कुल ऑर्डरिंग वाले तत्वों के एक परिवर्तनीय टुकड़े में sort विधि है।

क्योंकि Vec<T>DerefMut<[T]> लागू करता है, तो आप इस विधि को सीधे वेक्टर पर कॉल कर सकते हैं, इसलिए vector.sort() काम करता है।

+0

क्या टी प्रकार के लिए आवश्यकताएँ हैं:

के बाद जंग कोड है? मुझे एक त्रुटि मिल रही है जो कहती है "वेक 'सॉर्ट' नामक दायरे में किसी भी विधि को लागू नहीं करता है। मुझे संदेह है कि ऐसा इसलिए हो सकता है क्योंकि मैंने माईटाइप के लिए कुछ विशेषताओं को लागू नहीं किया है, मेरे पास cmp :: PartialEq और cmp :: PartialOrd है। –

+5

'sort_by' विधि भी है जो पूरी तरह से कस्टम भविष्यवाणी की अनुमति देता है। – huon

+0

@ChrisMorgan बहुत बढ़िया, यह काम करता है, धन्यवाद! –

1

जबकि ऊपर प्रस्तावित समाधान पूर्णांक के वैक्टर को सॉर्ट कर सकते हैं, मुझे फ्लोट्स के वैक्टरों को क्रमबद्ध करने में समस्याएं थीं।

सबसे आसान समाधान quickersort crate का उपयोग करना था, जो फ्लोट को भी सॉर्ट कर सकता है। क्विकर्सोर्ट क्रेट किसी भी प्रकार के अन्य वैक्टरों को भी सॉर्ट कर सकता है और तुलना (सॉर्ट_बी) का उपयोग करके सॉर्ट करने के तरीकों को भी लागू कर सकता है।

extern crate quickersort; 
//let's create the vector with the values 
let mut vals = Vec::new(); 
vals.push(31.2); 
vals.push(31.2); 
vals.push(10.0); 
vals.push(100.4); 
vals.push(4.1); 
quickersort::sort_floats(&mut vals[..]); // sort the vector 
+2

आपको फ़्लोट्स को सॉर्ट करने के लिए केवल एक अलग क्रेट की आवश्यकता नहीं है - उदाहरण के लिए, 'v.sort_by (| a, b | a.partial_cmp (b) .unwrap_or (ऑर्डरिंग :: समान))' फ्लोट के साथ काम करना चाहिए। (सरणी में NaNs के साथ आप क्या करना चाहते हैं, इस पर निर्भर करते हुए, आप अधिक सावधानीपूर्वक तुलनात्मक फ़ंक्शन लिख सकते हैं।) – user4815162342

+0

* मुझे फ्लोट्स * - के वैक्टरों को सॉर्ट करने में समस्याएं थीं, यही कारण है कि पहले से ही पूरे प्रश्न और उत्तर उस विशिष्ट को समर्पित हैं समस्या (https://stackoverflow.com/q/26489701/155423, https://stackoverflow.com/q/28247990/155423, https://stackoverflow.com/q/37127209/155423)। – Shepmaster

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