यह समझाने के लिए कि आपकी स्क्रिप्ट अभी क्यों काम नहीं कर रही है, मैं चर unsortedका नाम बदल दूंगा sorted।
सबसे पहले, आपकी सूची अभी तक सॉर्ट नहीं की गई है। बेशक, हम सेट sortedकरते हैं False।
जैसे ही हम whileलूप शुरू करते हैं , हम मान लेते हैं कि सूची पहले से ही क्रमबद्ध है। विचार यह है: जैसे ही हमें दो तत्व मिलते हैं जो सही क्रम में नहीं होते हैं, हम sortedवापस सेट करते हैं False। केवल तभीsorted रहेगा True जब गलत क्रम में कोई तत्व नहीं थे ।
sorted = False # We haven't started sorting yet
while not sorted:
sorted = True # Assume the list is now sorted
for element in range(0, length):
if badList[element] > badList[element + 1]:
sorted = False # We found two elements in the wrong order
hold = badList[element + 1]
badList[element + 1] = badList[element]
badList[element] = hold
# We went through the whole list. At this point, if there were no elements
# in the wrong order, sorted is still True. Otherwise, it's false, and the
# while loop executes again.
कुछ छोटे मुद्दे भी हैं जो कोड को अधिक कुशल या पठनीय बनाने में मदद करेंगे।
में forपाश, आप चर का उपयोग element। तकनीकी रूप से, elementएक तत्व नहीं है; यह एक सूची सूचकांक का प्रतिनिधित्व करने वाला एक नंबर है। इसके अलावा, यह काफी लंबा है। इन मामलों में, बस एक अस्थायी चर नाम का उपयोग करें, जैसे i"सूचकांक"।
for i in range(0, length):
rangeआदेश भी सिर्फ एक तर्क (नाम ले जा सकते हैं stop)। उस स्थिति में, आपको 0 से उस तर्क तक सभी पूर्णांकों की एक सूची मिलती है।
for i in range(length):
अजगर स्टाइल गाइड सिफारिश की है कि चर अंडरस्कोर से छोटे अक्षरों में नाम दिया। यह इस तरह से एक छोटी सी स्क्रिप्ट के लिए एक बहुत ही मामूली नाइटपिक है; यह आपको पायथन कोड के आदी होने के लिए अधिक बार मिलता है।
def bubble(bad_list):
दो चर के मूल्यों को स्वैप करने के लिए, उन्हें एक टपल असाइनमेंट के रूप में लिखें। दाहिने हाथ की ओर एक ट्यूपल के रूप में मूल्यांकन किया जाता है (कहते हैं, (badList[i+1], badList[i])है (3, 5)) और फिर बाएं हाथ की तरफ दो चर को सौंपा जाता है ( (badList[i], badList[i+1]))।
bad_list[i], bad_list[i+1] = bad_list[i+1], bad_list[i]
यह सब एक साथ रखो, और आपको यह मिलता है:
my_list = [12, 5, 13, 8, 9, 65]
def bubble(bad_list):
length = len(bad_list) - 1
sorted = False
while not sorted:
sorted = True
for i in range(length):
if bad_list[i] > bad_list[i+1]:
sorted = False
bad_list[i], bad_list[i+1] = bad_list[i+1], bad_list[i]
bubble(my_list)
print my_list
(मैंने आपके प्रिंट स्टेटमेंट को भी हटा दिया, वैसे।)