algorithm
सम्मिलन सॉर्ट
खोज…
टिप्पणियों
जब हम छंटाई एल्गोरिथ्म के प्रदर्शन का विश्लेषण करते हैं, तो हम तुलना और विनिमय की संख्या पर मुख्य रूप से रुचि रखते हैं।
औसत विनिमय
ई चलो एन एन तत्व की तरह सरणी के आदान-प्रदान का कुल औसत संख्या हो। ई 1 = 0 (हमें एक तत्व के साथ सरणी के लिए किसी भी विनिमय की आवश्यकता नहीं है)। एन एलिमेंट एरे को सॉर्ट करने के लिए एक्सचेंज की औसत संख्या एन -1 एलिमेंट एलीमेंट में अंतिम एलीमेंट को डालने के लिए एन-ए एलिमेंट एरे को सॉर्ट करने के लिए एक्सचेंज की संख्या की औसत संख्या का योग है।
योग को सरल कीजिए (अंकगणितीय श्रृंखला)
कार्यकाल बढ़ाता है
पुनः सरलीकरण करें (अंकगणितीय श्रृंखला)
औसत तुलना
सी चलो एन एन तत्व की तरह सरणी की तुलना की कुल औसत संख्या हो। सी 1 = 0 (हमें एक तत्व सरणी पर किसी भी तुलना की आवश्यकता नहीं है)। एन एल तत्व सरणी को सॉर्ट करने की तुलना की औसत संख्या एन -1 तत्व सरणी में अंतिम तत्व डालने के लिए औसत तुलना के साथ एन -1 तत्व सरणी को सॉर्ट करने के लिए तुलना की संख्या की औसत संख्या का योग है। यदि अंतिम तत्व सबसे बड़ा तत्व है, तो हमें केवल एक तुलना की आवश्यकता है, यदि अंतिम तत्व दूसरा सबसे छोटा तत्व है, तो हमें N-1 तुलना की आवश्यकता है। हालांकि, यदि अंतिम तत्व सबसे छोटा तत्व है, तो हमें एन तुलना की आवश्यकता नहीं है। हमें अभी भी केवल एन -1 तुलना की आवश्यकता है। यही कारण है कि हम 1 / एन को नीचे के समीकरण में हटा देते हैं।
योग को सरल करें (अंकगणितीय श्रृंखला)
शब्द का विस्तार करें
पुनः सरलीकरण करें (अंकगणितीय श्रृंखला और हार्मोनिक संख्या)
एल्गोरिथम मूल बातें
सम्मिलन सॉर्ट एक बहुत ही सरल, स्थिर, इन-प्लेस सॉर्टिंग एल्गोरिथ्म है। यह छोटे अनुक्रमों पर अच्छा प्रदर्शन करता है, लेकिन बड़ी सूचियों पर यह बहुत कम कुशल है। प्रत्येक चरण में, एल्गोरिदम दिए गए अनुक्रम के i-th तत्व पर विचार करता है, इसे बाईं ओर ले जाता है जब तक कि यह सही स्थिति में न हो।
चित्रमय चित्रण
स्यूडोकोड
for j = 1 to length(A)
n = A[j]
i = j - 1
while j > 0 and A[i] > n
A[i + 1] = A[i]
i = i - 1
A[i + 1] = n
उदाहरण
पूर्णांकों की निम्नलिखित सूची पर विचार करें:
[5, 2, 4, 6, 1, 3]
एल्गोरिथ्म निम्न चरणों का पालन करेगा:
-
[5, 2, 4, 6, 1, 3]
-
[2, 5, 4, 6, 1, 3]
-
[2, 4, 5, 6, 1, 3]
-
[2, 4, 5, 6, 1, 3]
-
[1, 2, 4, 5, 6, 3]
-
[1, 2, 3, 4, 5, 6]
C # कार्यान्वयन
public class InsertionSort
{
public static void SortInsertion(int[] input, int n)
{
for (int i = 0; i < n; i++)
{
int x = input[i];
int j = i - 1;
while (j >= 0 && input[j] > x)
{
input[j + 1] = input[j];
j = j - 1;
}
input[j + 1] = x;
}
}
public static int[] Main(int[] input)
{
SortInsertion(input, input.Length);
return input;
}
}
सहायक स्थान: O(1)
समय जटिलता: O(n)
हास्केल कार्यान्वयन
insertSort :: Ord a => [a] -> [a]
insertSort [] = []
insertSort (x:xs) = insert x (insertSort xs)
insert :: Ord a => a-> [a] -> [a]
insert n [] = [n]
insert n (x:xs) | n <= x = (n:x:xs)
| otherwise = x:insert n xs