2011-03-06 19 views
25

सॉर्ट के बारे में संग्रह बनाम Arrays() सॉर्ट() विधि के संबंध में इन दोनों के बीच क्या अंतर है? मुझे पता है Arrays 'sort() सॉर्ट() के लिए बाइनरी खोज का उपयोग कर रहा है, संग्रह के बारे में क्या? और कैसे उपयोग करना है इसका चयन करें? धन्यवाद!सॉर्ट के बारे में संग्रह बनाम Arrays()

+5

बाइनरी खोज एक सॉर्टिंग एल्गोरिदम नहीं है। – SigmaX

उत्तर

38

ठीक है, (Collections.sort एक List पर चल रही है, और Arrays.sort एक सरणी पर चल रही है) विभिन्न सामान पर काम के अलावा, java.util.Collections.sort() बस java.util.Arrays.sort() कॉल बड़े कार्य करने करने के लिए।

इसके अलावा, इसके लायक होने के लिए, ध्यान दें कि Arrays.sort एक विलय प्रकार चलाता है।

+2

आदिम सरणी पर सॉर्ट क्विकॉर्ट का उपयोग करता है, हालांकि (प्राइमेटिव्स के लिए स्थिरता संपत्ति न तो आवश्यक है और न ही सार्थक है)। –

+3

ऐसा लगता है कि यह जावा 7 में एक टाइम्सॉर्ट (संशोधित विलय सॉर्ट) है http://stackoverflow.com/questions/4018332/is-java-7-using-tim-sort-for-the-method-arrays-ॉर्ट – rogerdpack

1

यदि आप ऐरे से निपट रहे हैं तो Arrays.sort() का उपयोग करें। Collections.sort() का उपयोग करें यदि आप कुछ ऐसा व्यवहार कर रहे हैं जो संग्रह इंटरफ़ेस लागू करता है (उदाहरण के लिए ArrayList)।

1

जैसा कि अन्य उत्तरों ने कहा है, आप किसी ऑब्जेक्ट से निपटने के दौरान संग्रह .sort() का उपयोग करेंगे जो संग्रह इंटरफ़ेस और Arrays.sort() विधि को ऐरे से निपटने के दौरान लागू करता है।

एक संबंधित प्रश्न यह है कि यदि आप मानों का एक सेट सॉर्ट करना चाहते हैं तो किस प्रकार की डेटा संरचना बेहतर होती है। यदि आपको किसी सूची का उपयोग करने की आवश्यकता है, तो मैं ओ (1) में चलने वाले प्रविष्टियों के बाद से लिंक्डलिस्ट का उपयोग करने का सुझाव दूंगा जहां एक ऐरेलिस्ट की तरह कुछ ओ (एन) होगा।

यदि कोई डुप्लिकेट नहीं होगा या डुप्लीकेट नहीं है तो आप सॉर्टेडसेट का उपयोग करने का विकल्प भी चुन सकते हैं। इस तरह आपको बाहरी सॉर्ट विधि का उपयोग करने से परेशान नहीं होना पड़ेगा।

9

मैं सरणी 'तरह पता() प्रकार के लिए द्विआधारी खोज()

नहीं, आप इस तरह के किसी भी बात पता नहीं है का उपयोग कर रहा है। यह ऐसा नहीं करता है। जावाडोक देखें।

कथन भी समझ में नहीं आता है। आप 'सॉर्ट के लिए बाइनरी खोज का उपयोग नहीं कर सकते'। बाइनरी खोज केवल तभी काम करती है जब डेटा पहले से ही सॉर्ट किया गया हो। शायद आप जो पढ़ते हैं वह है कि Arrays.binarySearch()मानता है डेटा सॉर्ट किया गया है।

4

संग्रह .sort() सूची पर संचालित करता है जहां Arrays.sort() एक ऐरे पर काम करता है।

Arrays.sort() दोहरे धुरी quicksort आदिम सरणी के लिए और का उपयोग करता MergeSort वस्तुओं की सरणी छँटाई के लिए। Collections.sort की

उदाहरण():

ArrayList<Integer> arr = new ArrayList<Integer>(); 
arr.add(15); 
arr.add(10); 
arr.add(5); 
arr.add(2); 

Collections.sort(arr); 

Arrays.sort() का उदाहरण:

int[] arr = new int[4] 
arr[0]=15; 
arr[1]=10; 
arr[2]=5; 
arr[3]=2; 

Arrays.sort(arr); 
0

Collection.sort प्रयोग किया जाता है जब आप सूचियों के साथ काम कर और arrays.sort पर मुकदमा दायर किया है सरणी से निपटने पर। लेकिन आंतरिक रूप से Collection.sort केवल Arrays.sort विधि का उपयोग करता है। अब आंतरिक रूप से सॉर्टिंग को विलय सॉर्ट करने के बजाय टिमोसर्ट तकनीक के आधार पर किया जाता है, क्योंकि स्थिर, अनुकूली सरणी मर्ज प्रकार में ओ (nlogn) तुलना लेती है लेकिन टिमसोर्ट में सबसे खराब स्थिति में यह ओ (nlogn) लेता है और सबसे खराब स्थिति भंडारण में n/2 की आवश्यकता होती है टिमसोर्ट में लेकिन यह मर्ज सॉर्ट तकनीक के मामले में नहीं है।

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