एक फ़ंक्शन या प्रोग्राम बनाएं जो दो इनपुट लेता है:
- पूर्णांकों की एक सूची जो क्रमबद्ध होगी (20 से कम तत्व)
- एक सकारात्मक पूर्णांक,
N
यह कहते हुए कि आपको कितनी तुलना करनी चाहिए
फ़ंक्शन बंद हो जाएगा, और N
तुलना के बाद पूर्णांकों की परिणामी सूची का उत्पादन करेगा । यदि N
तुलना किए जाने से पहले सूची को पूरी तरह से सॉर्ट किया जाता है, तो सॉर्ट की गई सूची को आउटपुट किया जाना चाहिए।
बुलबुला तरह एल्गोरिथ्म अच्छी तरह से जाना जाता है, और मुझे लगता है कि ज्यादातर लोगों को यह पता है। निम्नलिखित छद्म कोड और एनीमेशन (दोनों विकिपीडिया-लेख से) आवश्यक विवरण प्रदान करना चाहिए:
procedure bubbleSort( A : list of sortable items )
n = length(A)
repeat
swapped = false
for i = 1 to n-1 inclusive do
/* if this pair is out of order */
if A[i-1] > A[i] then
/* swap them and remember something changed */
swap( A[i-1], A[i] )
swapped = true
end if
end for
until not swapped
end procedure
नीचे दिया गया एनीमेशन प्रगति दर्शाता है:
एक उदाहरण (लिंक किए गए विकिपीडिया लेख से सीधे लिया गया) सूची को सॉर्ट करते समय चरणों को दर्शाता है ( 5 1 4 2 8 )
:
पहला पास
1: ( 5 1 4 2 8 ) -> ( 1 5 4 2 8 ) // Here, algorithm compares the first two elements,
// and swaps since 5 > 1.
2: ( 1 5 4 2 8 ) -> ( 1 4 5 2 8 ) // Swap since 5 > 4
3: ( 1 4 5 2 8 ) -> ( 1 4 2 5 8 ) // Swap since 5 > 2
4: ( 1 4 2 5 8 ) -> ( 1 4 2 5 8 ) // Now, since these elements are already in order
// (8 > 5), algorithm does not swap them.
दूसरा पास
5: ( 1 4 2 5 8 ) -> ( 1 4 2 5 8 )
6: ( 1 4 2 5 8 ) -> ( 1 2 4 5 8 ) // Swap since 4 > 2
7: ( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
8: ( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
अब, सरणी पहले से ही सॉर्ट की गई है, लेकिन एल्गोरिथ्म पता नहीं है कि क्या यह पूरा हो गया है। एल्गोरिथ्म को किसी भी स्वैप के बिना एक पूरे पास की जरूरत है ताकि यह पता चल सके कि यह किस प्रकार का है।
तीसरा पास
9: ( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
10:( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
11:( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
12:( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
परीक्षण के मामलों:
प्रारूप: Number of comparisons (N): List after N comparisons
Input list:
5 1 4 2 8
Test cases:
1: 1 5 4 2 8
2: 1 4 5 2 8
3: 1 4 2 5 8
4: 1 4 2 5 8
5: 1 4 2 5 8
6: 1 2 4 5 8
10: 1 2 4 5 8
14: 1 2 4 5 8
Input list:
0: 15 18 -6 18 9 -7 -1 7 19 19 -5 20 19 5 15 -5 3 18 14 19
Test cases:
1: 15 18 -6 18 9 -7 -1 7 19 19 -5 20 19 5 15 -5 3 18 14 19
21: -6 15 18 9 -7 -1 7 18 19 -5 19 19 5 15 -5 3 18 14 19 20
41: -6 9 -7 15 -1 7 18 18 -5 19 19 5 15 -5 3 18 14 19 19 20
60: -6 -7 -1 9 7 15 18 -5 18 19 5 15 -5 3 18 14 19 19 19 20
61: -6 -7 -1 7 9 15 18 -5 18 19 5 15 -5 3 18 14 19 19 19 20
81: -7 -6 -1 7 9 15 -5 18 18 5 15 -5 3 18 14 19 19 19 19 20
119: -7 -6 -1 -5 7 9 15 5 15 -5 3 18 14 18 18 19 19 19 19 20
120: -7 -6 -1 -5 7 9 15 5 15 -5 3 18 14 18 18 19 19 19 19 20
121: -7 -6 -1 -5 7 9 5 15 15 -5 3 18 14 18 18 19 19 19 19 20
122: -7 -6 -1 -5 7 9 5 15 15 -5 3 18 14 18 18 19 19 19 19 20
123: -7 -6 -1 -5 7 9 5 15 -5 15 3 18 14 18 18 19 19 19 19 20
201: -7 -6 -5 -1 -5 3 5 7 9 14 15 15 18 18 18 19 19 19 19 20
221: -7 -6 -5 -5 -1 3 5 7 9 14 15 15 18 18 18 19 19 19 19 20
- हां, बिल्ट-इन बबल सॉर्ट एल्गोरिदम की अनुमति है।
- नहीं, आप केवल सकारात्मक पूर्णांक या अद्वितीय पूर्णांक नहीं मान सकते।
- ऊपर वर्णित क्रम में छँटाई होनी चाहिए। आप सूची के अंत में शुरू नहीं कर सकते