सामग्री पर जाएँ

शाटन की कलनविधि

कम्प्यूटर विज्ञान में उन कलनविधियों को अनुक्रमण कलनविधि (sorting algorithm) कहते हैं जो किसी सूची के अवयवों का मूल क्रम बदलकर किसी अन्य क्रमविशेष में व्यवस्थित करने के काम आतीं हैं। जैसे २, ७, ४, ५, ६ को अनुक्रमित करने पर २, ४, ५, ६, ७ मिलते हैं। दो प्रकार के क्रम सबसे अधिक प्रयुक्त होते हैं - संक्यात्मक क्रम (numerical order) तथा कोशक्रम (lexicographical order)। कम्प्यूटर प्रोग्रामों में अनुक्रमण का सम्भवतः सबसे अधिक उपयोग होता है। इसलिए दक्षतापूर्वक अनुक्रमण करने वाले अल्गोरिद्म बहुत महत्व रखते हैं। कुछ अन्य कलनविधियाँ तभी कार्य कर सकती हैं जब पहले आंक। दों को किसी क्रम में व्यवस्थित किया गया हो। उदाहरण के लिए खोजने (search algorithms) और विलय करने वाले (merge algorithms) अल्गोरिद्म (search and merge algorithms) ठीक से तभी काम करेंगे जब उनका उपयोग किसी अनुक्रमित सूची पर किया जाय।

कम्प्यूटरी के आरम्भ से ही अनुक्रमण के प्रश्न पर बहुत अधिक अनुसंधान होता आया है। यद्यपि अनुक्रमण का कार्य बहुत ही सरल कार्य है किन्तु जब किसी वृहद सूची को दक्षतापूर्वक अनुक्रमित करना हो तब यह एक जटिल समस्या बन जाती है।

प्रमुख विधियाँ

  • हीप अनुक्रमण (Heapsort) - यह चयन अनुक्रमण का ही एक रूप है जो अपेक्षाकृत बहुत दक्ष है।
  • द्रुत अनुक्रमण (Quicksort) - यह विभाजन द्वारा विजय (divide and conquer) पर आधारित अनुक्रमण अल्गोरिद्म है। यह सबसे तेज अनुक्रमण विधियों में से एक है।

अनुक्रमण विधियों की तुलना

Comparison of algorithms

नीचे की सारणी में n अनुक्रमित किए जाने वाले रेकार्डों की संख्या है।

तुलना अनुक्रमण
विधि का नामसर्वोत्तममध्यमसबसे खराब
स्मृति (Memory)स्थायित्वविधि
टिप्पणी
द्रुत अनुक्रमणDepends Partitioning Quicksort is usually done in place with O(log(n)) stack space.[] Most implementations are unstable, as stable in-place partitioning is more complex. Naïve variants use an O(n) space array to store the partition.[]
Merge sortDepends; worst case is Yes Merging Highly parallelizable (up to O(log(n))) for processing large amounts of data.
In-place Merge sortYes Merging Implemented in Standard Template Library (STL);[1] can be implemented as a stable sort based on stable in-place merging.[2]
HeapsortNo Selection
Insertion sortYes Insertion O(n + d), where d is the number of inversions
IntrosortNo Partitioning & Selection Used in several STL implementations
Selection sortNo Selection Stable with O(n) extra space, for example using lists.[3] Used to sort this table in Safari or other Webkit web browser.[4]
TimsortYes Insertion & Merging comparisons when the data is already sorted or reverse sorted.
Shell sort

or

Depends on gap sequence; best known is No Insertion
Bubble sortYes Exchanging Tiny code size
Binary tree sortYes Insertion When using a self-balancing binary search tree
Cycle sortNo Insertion In-place with theoretically optimal number of writes
Library sortYes Insertion
Patience sortingNo Insertion & Selection Finds all the longest increasing subsequences within O(n log n)
SmoothsortNo Selection An adaptive sort - comparisons when the data is already sorted, and 0 swaps.
Strand sortYes Selection
Tournament sortSelection
Cocktail sortYes Exchanging
Comb sortNo Exchanging Small code size
Gnome sortYes Exchanging Tiny code size
BogosortNo Luck Randomly permute the array and check if sorted.
[5]Yes
गैर-तुलना अनुक्रमण
NameBestAverageWorst
Memory
Stablen << 2kNotes
Pigeonhole sortYes Yes
Bucket sort (uniform keys) Yes No Assumes uniform distribution of elements from the domain in the array.[6]
Bucket sort (integer keys) Yes Yes r is the range of numbers to be sorted. If r = then Avg RT = [7]
Counting sortYes Yes r is the range of numbers to be sorted. If r = then Avg RT = [6]
LSD Radix SortYes No [6][7]
MSD Radix SortYes No Stable version uses an external array of size n to hold all of the bins
MSD Radix SortNo No In-Place. k / d recursion levels, 2d for count array
SpreadsortNo No Asymptotics are based on the assumption that n << 2k, but the algorithm does not require this.

सन्दर्भ

  1. "संग्रहीत प्रति". मूल से 11 जनवरी 2013 को पुरालेखित. अभिगमन तिथि 2 दिसंबर 2012.
  2. "संग्रहीत प्रति". मूल से 15 अक्तूबर 2012 को पुरालेखित. अभिगमन तिथि 2 दिसंबर 2012.
  3. "संग्रहीत प्रति". मूल से 9 दिसंबर 2012 को पुरालेखित. अभिगमन तिथि 2 दिसंबर 2012.
  4. "संग्रहीत प्रति". मूल से 21 मार्च 2012 को पुरालेखित. अभिगमन तिथि 2 दिसंबर 2012.
  5. http://www.springerlink.com/content/d7348168624070v7/[मृत कड़ियाँ]
  6. साँचा:Introduction to Algorithms
  7. Goodrich, Michael T.; Tamassia, Roberto (2002). "4.5 Bucket-Sort and Radix-Sort". Algorithm Design: Foundations, Analysis, and Internet Examples. John Wiley & Sons. पपृ॰ 241–243.

इन्हें भी देखें

बाहरी कड़ियाँ