मैं अपने बबल सॉर्ट फ़ंक्शन को चलने से रोकना चाहता हूं यदि यह एक सूची है जो पहले से ही आदेशित है (या पहले से ही ऑर्डर किया गया आधा बुलबुला सॉर्ट किया जा रहा है)
मैंने अपने बबल सॉर्ट फ़ंक्शन को इस प्रकार परिभाषित किया है
def swap(values,i,j):
values[i],values[j]=values[j],values[i]
def bubble(values):
for i in range (len(values)-1):
if values[i]>values[i+1]:
swap(values,i,i+1)
def bubble_sort(values):
count = 0
for i in range(len(values)-1):
count += 1
bubble(values)
return count
यहाँ पर मैं बार-बार गिनती करता हूँ कि मैं बबल फंक्शन को कॉल करता हूँ यह देखने के लिए कि स्वैप कितनी बार किया जाता है। मैं कोड को बदलना चाहता हूँ ताकि अगर उसे पहले से हल की गई सूची दी जाए, तो bubble_sort()
फ़ंक्शन कॉल करना बंद कर देगा bubble()
समारोह।
मुझे पता है कि मुझे बबल फ़ंक्शन में एक बूलियन का उपयोग करना होगा जो किसी भी मानों की अदला-बदली करता है, लेकिन मुझे यकीन नहीं है कि वास्तव में इसे कैसे लागू किया जाए।
उत्तर:
उत्तर № 1 के लिए 1जॉर्ज जवाब के रूप में दिखाते हैं, लेकिन स्पष्ट नहीं करते (जैसा कि बंद हैजेट) बबल में एक वैरिएबल वैरिएबल डालें जो डिफॉल्ट टू ट्रू या फाल्स को डिफॉल्ट करता है, जो भी आप चुनते हैं, उसके मूल्य को ऑपोजिट में बदल दें यदि आप स्वैप करते हैं और उस वैरिएबल को अंत में लौटाते हैं, यदि बबल से आपको मिलने वाला मान आपका डिफ़ॉल्ट मान है, इसका मतलब है कि आपकी सूची का आदेश दिया गया है अन्यथा नहीं है और आपको उस फ़ंक्शन को कॉल करना जारी रखना चाहिए। फिर आप मुख्य फ़ंक्शन को इस तरह थोड़ी देर के लूप में बदल सकते हैं
def bubble(values):
"return true if a swap was made, false otherwise"
flag = False
for i in range(len(values)-1):
if values[i]>values[i+1]:
swap(values,i,i+1)
flag = True
return flag
def bubble_sort(values):
count = 0
while bubble(values): # while there is a swap...
count += 1
return count
परीक्षा
>>> test=[1,9,4,7,2,8,10,5,6,3]
>>> bubble_sort(test)
7
>>> test
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> bubble_sort(test)
0
>>> test
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
जवाब के लिए 0 № 2
def swap(values,i,j):
values[i],values[j]=values[j],values[i]
def bubble(values):
flag = False
for i in range (len(values)-1):
if values[i]>values[i+1]:
flag = True
swap(values,i,i+1)
return flag
def bubble_sort(values):
count = 0
for i in range(len(values)-1):
count += 1
if(not bubble(values))
break
return count