सदिश में मानों को छाँटने के लिए वर्तमान में अनुशंसित विधि क्या है?
सदिश में मानों को छाँटने के लिए वर्तमान में अनुशंसित विधि क्या है?
जवाबों:
sort_by
विधि भी है जो पूरी तरह से कस्टम विधेय की अनुमति देती है।
self.sort()
== self.sort_by(|a, b| a.cmp(b))
।
.sort()
यदि प्रकार विशेषता को T
लागू करता cmp::Ord
है।
sort_unstable
इसे थोड़ा तेज़ भी देख सकते हैं, लेकिन "बराबर" तत्वों को फिर से व्यवस्थित कर सकते हैं
जबकि ऊपर प्रस्तावित समाधान पूर्णांक के वैक्टर को सॉर्ट कर सकते हैं मुझे फ़्लोट के वैक्टर को छाँटने में समस्या थी।
सबसे सरल उपाय क्विकरॉर्ट टोकरा का उपयोग करना था , जो फ्लोट को भी सॉर्ट कर सकता है। क्विकर्सॉर्ट क्रेट किसी भी प्रकार के अन्य वैक्टर को भी सॉर्ट कर सकता है और तुलना (Sort_by) का उपयोग करने के लिए तरीकों को भी लागू करता है।
निम्नलिखित कोड है:
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
v.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Equal))
फ़्लोट्स के साथ काम करना चाहिए। (सरणी में NaNs के साथ आप क्या करना चाहते हैं इसके आधार पर, आप एक अधिक सावधान तुलनात्मक फ़ंक्शन लिख सकते हैं।)